第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

調(diào)用帶參數(shù)的構(gòu)造函數(shù)

調(diào)用帶參數(shù)的構(gòu)造函數(shù)

大話西游666 2021-11-18 09:30:54
我有一個無法修改的函數(shù),我需要調(diào)用它,但我以前從未見過這樣的東西。var myCategorize = function(z) {    return function(q) {      return 1;    } }('window'.indexOf('w') > 0 || window || false);我已經(jīng)去掉了 function(q) 部分的一些代碼,只是為了簡化。我想我有一個咖喱函數(shù),所以我試過這個:let category = myCategorize(bookTitles[i])(categories);但是當我這樣做時,我收到以下錯誤:Uncaught TypeError: myCategorize(...) is not a function所以也許這是一個匿名構(gòu)造函數(shù),所以我嘗試這樣的事情:let category = function(){myCategorize(bookTitles[i])(categories)};console.log(category.apply());我犯了同樣的錯誤。如何調(diào)用此函數(shù)并獲取返回值 1?
查看完整描述

2 回答

?
紫衣仙女

TA貢獻1839條經(jīng)驗 獲得超15個贊

myCategorize不是柯里化函數(shù),它是實現(xiàn)模塊模式的 IIFE。最后一行末尾的括號執(zhí)行頂級function(z):


var myCategorize = function(z) {

    return function(q) {

      return 1;

    }

 }('window'.indexOf('w') > 0 || window || false);

//^--------------------------------------------^

并傳入 的值z。如果我重新編寫它以添加額外的括號和名稱位會更清楚:


var myCategorize = (function outer(z) {

//start of outer --^

    return function inner(q) {

      return 1;

    }

 })('window'.indexOf('w') > 0 || window || false);

//^-- end of outer

所以你分配給myCategorize的只是inner. 要執(zhí)行它,只需添加括號和一個參數(shù):


var myCategorize = function(z) {

    return function(q) {

      return 1;

    }

 }('window'.indexOf('w') > 0 || window || false);


console.log("myCategorize", myCategorize);

var executionResult = myCategorize("foo");

console.log("executionResult", executionResult);


查看完整回答
反對 回復(fù) 2021-11-18
?
RISEBY

TA貢獻1856條經(jīng)驗 獲得超5個贊

添加括號時它已經(jīng)調(diào)用了一次函數(shù),所以它的值為myCategorize:


? (q) {

  return 1;

}

然后你調(diào)用該函數(shù),let category = myCategorize(bookTitles[i])其值為category:1


是這樣,則等效的let category = myCategorize(bookTitles[i])(categories);就是


let category = 1(categories); 拋出那個錯誤


var myCategorize = function(z) {

  return function(q) {

    return 1;

  }

}('window'.indexOf('w') > 0 || window || false);


let category = myCategorize('x'); // 1


console.log(category);


let category2 = myCategorize('x')('y'); // throws, equovalent to 1('y');


查看完整回答
反對 回復(fù) 2021-11-18
  • 2 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號