我在鉻選項卡控制檯中運行的代碼塊,但我不能
明白爲什麼是第二個塊的輸出NaN.The值傳遞應該在第二種情況下不包括b,其中應該不重要的是我的想法。Javascript的箭頭功能
var adder = {
base: 1,
add: function(a) {
var f = v => v + this.base;
return f(a);
},
addThruCall: function(a,n) {
var f = (v,n) => v + n + this.base;
var b = {
base: 2
};
return f.call(b,a,n);
}
};
console.log(adder.addThruCall(3,4)); // output: 8
但是當我做
var adder = {
base: 1,
add: function(a) {
var f = v => v + this.base;
return f(a);
},
addThruCall: function(a,n) {
var f = (v,n) => v + n + this.base;
var b = {
base: 2
};
return f.call(a,n);
}
};
console.log(adder.addThruCall(3,4)); //output: NaN
fn.call的第一個參數()是「這'的論據。所以'f。call(a,n)'與調用'f(n,undefined)'相同,'f'中的'a'是'this'。因此,你從NaN號得到NaN + undefined = NaN – Shilly