2017-06-18 29 views

回答

1

max靜態功能,所以不管你什麼傳遞作爲這個。反正這個數值沒有用。

所以,你的情況下一個功能是等價

function getMax(arr) { 
    return Math.max.apply(null, arr); 
} 

function getMax(arr) { 
    return Math.max.apply(this, arr); 
} 
+0

謝謝,但假設,而不是一個stactic函數一些其他函數在那裏有什麼用途通過這個或無效和差異,請原諒我是天真的,如果解釋會有很大的幫助。 – Enthu

+0

@Harsh,來自spec:[_ thisArg的值**作爲這個值傳遞,沒有修改**。這是從版本3開始的一個變化,其中未定義或null的thisArg被全局對象替換,並且ToObject被應用於所有其他值,並且該結果作爲此值傳遞。即使thisArg未經修改就被傳遞,非嚴格函數在進入函數時仍然執行這些轉換._](http://ecma-international.org/ecma-262/7.0/#sec-function.prototype.call ) – Grundy

0

使用這是建設的重大意義的差異調用方法時設置當前上下文。例如:

function Human() { 
    this.getMax = function getMax(arr) { 
     console.log(this.constructor); 
     return Math.max.apply(this, arr); 
    } 
} 

var human = new Human(); 

human.getMax([1,2]); 

在這裏,控制檯語句會將this.constructor作爲Human輸出。否則,你會得到上下文作爲窗口。

對於第一種情況,當您傳遞null時,它不會傳遞上下文。這在這裏有用,因爲Math.max期望以逗號分隔格式a,b,c,當你執行.apply時正在處理它。

+0

感謝gauravmuk,進一步我有查詢時,空不會給任何情況下則可以用於什麼目的,因爲申請的主要目的是給上下文。 – Enthu