2015-05-23 62 views
-1

我遇到了一個關於如何在使用它時應用的問題。 Math.max。例如,讓我們說我有一個數組:我作爲第一個參數傳遞Javascript應用奇怪的行爲?

var arr = [1, 2, 3, 4, 5]; 
var biggest = Math.max.apply(Math, arr); 
console.log(biggest);//outputs 5 which is correct 

但無論價值我總是得到相同的結果:

var biggest = Math.max.apply(this, arr); 
var biggest = Math.max.apply(null, arr); 
var biggest = Math.max.apply("", arr); 
var biggest = Math.max.apply(window, arr); 
... 

console.log(biggest);//all above output 5 why?? 

唯一的假設,我可以做的是,Math.max什麼時候調用throw函數上下文無關緊要?

+0

感謝@DaveNewton,因此功能上下文並不像我想的那樣重要。 – user2019037

回答

1

傳遞給任何函數的apply第一個參數,將是函數內this。但是,max不依賴於當前上下文。所以,任何東西都可以在Math的適當位置工作。

0

max將是像Java一樣的類語言的靜態方法。它不會在僅使用參數的上下文中繼續。你可以看到,當你調用它時,你不會創建Math的一個實例,只需訪問它的方法即可。 這是調用函數式編程,因爲沒有可能影響結果的狀態。只要輸入相同,函數的輸出將始終相同