2016-11-25 83 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(即5),b = c(5)等。

在你的例子中,那些控制檯方法都被(重新)定義爲一個空函數。


請參閱:MDN: Assignment Operators瞭解更多信息。

5

分配時,操作從右向左分解。所以最右邊的值將被填充到所有前面的變量中。

1

你描述的,可以通過類比使用一個簡單的例子很容易解釋:

// 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();

從變量開始ab,你然後去cd被給予相同的值。這裏要說的是,您可以將相同的值分配給兩個變量,並且表達式將從右向左計算,因此實際上就像分別分配兩個變量的值。但是,這並不意味着改變另一個也會改變另一個。 最後,看看ef會發生什麼。這些被分配了一個函數,而不是一個值,所以你可以稱它們爲函數。

簡短版本:表達式從右向左解析。這項任務是按價值而不是參考,這意味着改變其中一個變量的價值不會影響其他變量。最後,如果您爲變量分配函數,則可以使用它們的名稱來調用它們的值。