2016-11-25 16 views
6

時にはインターネットで、私には奇妙な構文があります。次のようなもの:Javascript "Equal Sequence"の意味

console.log = console.error = console.info = console.debug = console.warn = console.trace = function() {} 

この「等しい」シーケンスはどのように機能しますか?

ありがとうございました。

答えて

5

代入演算子は、その右側のオペランドの値に基づいて、その左側のオペランドに値を割り当てます。

検討:

a = b = c = d = 5; 

を発現が右ので左に解決される:

d = 5c = dように、b = c(5)(5である)、および。

これらのコンソールメソッドはすべて、空の関数として(再)定義されています。


参照:MDN: Assignment Operators詳細については、MDN: Assignment Operatorsを参照してください。

5

割り当てを使用すると、操作は右から左に解決されます。したがって、右端の値はすべての前の変数に設定されます。

1

簡単にシンプルな例で使用した類推によって説明することができる何が説明する:変数abから始まっ

// Normal variable assignment 
 
var a, b; 
 
a = 15; 
 
b = 15; 
 
console.log("a: "+a+" , b: "+b); 
 
// Assing the same value to two variables 
 
var c, d; 
 
c = d = 15; 
 
console.log("c: "+c+" , d: "+d); 
 
// Assign the same value to two variables and make it a function 
 
var e, f; 
 
e = f = function(){ console.log("Hi!"); }; 
 
// Call both of the variables' functions 
 
e(); f();

を、あなたはその後、cと同じように与えられているdに行きます値。ここでは、2つの変数に同じ値を割り当てることができ、式は右から左へ評価されるので、実際には2つの変数の値を別々に割り当てるようなものです。しかし、これはchaning oneが他を変えることを意味しません。 最後に、efでどうなるかを見てください。これらの関数には値の代わりに関数が割り当てられているので、関数であるかのように呼び出すことができます。

ショートバージョン:式は右から左に解決されます。代入は参照ではなく値によって行われます。つまり、変数の値の1つを変更しても他の変数には影響しません。最後に、関数に変数を代入すると、それらの名前を使用して、その値である関数を呼び出すことができます。