亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用新參數創建已制作功能的副本?

使用新參數創建已制作功能的副本?

嗶嗶one 2019-04-17 18:19:08
我有一個功能freq01(),當點擊一個按鈕時,我想function(new)創建一個freq01()帶有新參數的功能副本。我不知道從哪里開始,或者JS是否可以從函數創建函數。已創建所有變量。請指出我正確的方向......!下面的代碼是將選中的單選按鈕值保存到數組中。function freq01(){   if (document.getElementById("w01").checked){    incFreq = document.getElementById("w01").value;   }   else if (document.getElementById("f01").checked){    incFreq = document.getElementById("f01").value;   }   else if (document.getElementById("m01").checked){    incFreq = document.getElementById("m01").value;   }}
查看完整描述

2 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

我不知道......如果JS可以從一個函數創建一個函數。


要回答這部分問題,是的Javascript可以從函數創建一個函數。任何函數都可以返回另一個函數,執行此操作的典型方法是創建工廠函數,或使用函數currying來創建新函數:


返回另一個函數的函數。由于Javascript閉包,您可以設置返回的函數可以看到的“私有”變量,但調用函數無法訪問:


function addTwoFactory() {

  let a = 2;

  return function(b) {

    return a + b;

  }

}


let f1 = addTwoFactory();

let f2 = addTwoFactory();

console.log(f1(3)); // 5

console.log(f2(3)); // 5

還可以創建可以創建不同種類方法的可配置工廠:


function makeAdder(a) {

  return function(b) {

    return a + b;

  }

}


let addTwo = adderFactory(2);

let addThree = adderFactory(3);

console.log(addTwo(3)); // 5

console.log(addThree(3)); // 6

嘩眾取寵

函數currying是一個基本函數的想法,它帶有幾個參數,并且“烘入”其中一個參數,以便更容易重用:


function adder(a, b) {

  return a + b;

}


function makeAdder(a) {

  return function(b) {

    return adder(a, b);

  }

}


let addTwo = makeAdder(2);

console.log(addTwo(3)); // 5


查看完整回答
反對 回復 2019-05-17
  • 2 回答
  • 0 關注
  • 454 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號