我寫了一個簡單的函數,它的第一個電話後勾銷本身:爲什麼這個JavaScript表達式評估爲false?
var nullify = function(){
nullify = null;
return 1;
};
如果我把它叫做兩次,就像這樣:
console.log(nullify());
console.log(nullify);
然後第一表達式將返回1
,和其他將評估爲null
。所有這些都清楚了。
如果我不過做在一個單一的表達和功能包起來:
var fun = function(f){
return f() && !f;
}
然後,出於某種原因:
console.log(fun(nullify));
評估爲false
,而我期望它爲true
,因爲第一個操作數將返回1
,另一個作爲null
,true
的否定。
當nullify
函數已經調用nullify = null
時,會發生右側操作數的求值,是嗎?我錯過了什麼?
我自己測試過,我得到'true'。 –
好的,我犯了一個錯誤,我編輯了一秒 –
賦值是通過值來完成的,而不是通過引用。 – Oriol