2017-05-03 62 views
2

儘管試圖閱讀「javascript的忍者的祕密」(好吧,也許我還沒有資格閱讀本書),但我看到下面的代碼,我明白代碼在做什麼,但第一部分真的不明白是函數(索引)被調用的地方。索引是任意的術語還是某種javascript來表示泛型索引?在javascript中的函數索引

<script type="text/javascript"> 
    function forEach(list,callback) { 
    for (var n = 0; n < list.length; n++) { 
     callback.call(list[n],n); 
    } 
} 
    var weapons = ['shuriken','katana','nunchucks']; 
    forEach(
    weapons, 
    function(index){ 
     function 

   assert(this == weapons [index], 
      "Got the expected value of " + weapons [index]); 
}); 
</script> 

回答

2

它作爲第二個參數傳遞給forEach

forEach(list,callback) 

...一個叫callback變量。

所以這裏叫:

callback.call(list[n],n); 
通過 call method


是指數任意條款或某種JavaScript來表明通用指標?

這是一個參數名稱。你自己定義了這個名字。它通過的值是在您調用該函數時確定的。

1

index它是在回調的執行上下文中可用的變量的別名,因此可用於調用者,名稱可以是任何。

這是一個用作 first class function(JavaScript中至關重要的概念)的函數的示例,它將它們作爲對象傳遞以定義自定義行爲。