Javascript“Equal Sequence”的含义

时间:2016-11-25 21:03:32

标签: javascript jquery

有时在互联网上,我看到一种对我来说很奇怪的语法。类似的东西:

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

这个“平等”的序列如何运作?

感谢。

3 个答案:

答案 0 :(得分:5)

通过分配,操作将从右向左解决。因此,最右边的值将填充到所有前面的变量中。

答案 1 :(得分:5)

  

赋值运算符根据其右操作数的值为其左操作数赋值。

考虑:

a = b = c = d = 5;

表达式从右到左解析,所以:

d = 5c = d(即5),b = c(5)等等。

在您的示例中,这些控制台方法都被(重新)定义为空函数。

有关详细信息,请参阅:MDN: Assignment Operators

答案 2 :(得分: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。这里要说的是,您可以为两个变量分配相同的值,并且表达式将从右到左进行评估,因此实际上它就像分配两个变量'价值分开。但是,这并不意味着chaning one也会改变另一个。 最后,看看ef会发生什么。这些被分配了一个函数而不是一个值,因此您可以将它们称为函数。

简短版:表达式从右向左解析。赋值是按值而不是通过引用,这意味着更改其中一个变量'价值不会影响他人。最后,如果为变量分配函数,则可以使用它们的名称来调用它们的值函数。