私はその最初の呼び出しの後に自分自身を無効に簡単な関数書かれている:私はこのように、2回それを呼び出す場合なぜこのJavaScript式はfalseに評価されますか?
var nullify = function(){
nullify = null;
return 1;
};
を:
console.log(nullify());
console.log(nullify);
その後、第一式は1
を返す、となります他はnull
と評価されます。すべてこの点まで明確です。
しかし私は、単一の式でそれを行うと機能でそれをラップしている場合:私はそれを期待しながら、
console.log(fun(nullify));
がfalse
と評価されます。何らかの理由で、
var fun = function(f){
return f() && !f;
}
その後true
となります。第1オペランドは1
を返し、もう1つは、null
の否定としてtrue
を返します。
右オペランドの評価は、nullify
機能がすでにnullify = null
と呼ばれている場合に発生します。私は何が欠けていますか?
自分でテストしたところ、「真実」を取得しました。 –
私は間違いを犯しました。編集は1秒です –
割り当ては参照ではなく値で行います。 – Oriol