有時候在互聯網上我看到一種對我來說很陌生的語法。例如:Javascript「Equal Sequence」意思是
console.log = console.error = console.info = console.debug = console.warn = console.trace = function() {}
這個「相等」序列是如何工作的?
感謝。
有時候在互聯網上我看到一種對我來說很陌生的語法。例如:Javascript「Equal Sequence」意思是
console.log = console.error = console.info = console.debug = console.warn = console.trace = function() {}
這個「相等」序列是如何工作的?
感謝。
賦值運算符根據其右操作數的值爲其左操作數賦值。
考慮:
a = b = c = d = 5;
表達解析從右向左這樣:
d = 5
和c = d
(即5),b = c
(5)等。
在你的例子中,那些控制檯方法都被(重新)定義爲一個空函數。
請參閱:MDN: Assignment Operators瞭解更多信息。
分配時,操作從右向左分解。所以最右邊的值將被填充到所有前面的變量中。
你描述的,可以通過類比使用一個簡單的例子很容易解釋:
// 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();
從變量開始a
和b
,你然後去c
和d
被給予相同的值。這裏要說的是,您可以將相同的值分配給兩個變量,並且表達式將從右向左計算,因此實際上就像分別分配兩個變量的值。但是,這並不意味着改變另一個也會改變另一個。 最後,看看e
和f
會發生什麼。這些被分配了一個函數,而不是一個值,所以你可以稱它們爲函數。
簡短版本:表達式從右向左解析。這項任務是按價值而不是參考,這意味着改變其中一個變量的價值不會影響其他變量。最後,如果您爲變量分配函數,則可以使用它們的名稱來調用它們的值。