一行Javascript代码的解释

Sam*_*man 3 javascript

Javascript中对此行的解释是什么?

var x[],matrix[],n;
...
n = (matrix = x) && matrix.length;
Run Code Online (Sandbox Code Playgroud)

尽管我搜索了它,但我找不到任何提示.

谢谢

T.J*_*der 8

它这样做:

  1. 赋值xmatrix; matrix = x表达式的结果是指定的值(所有赋值表达式都是如此).我们称这个值为"x值".我不想x从这里开始调用它,因为x只评估一次.
  2. 如果x值是真实的1(强制为真),则指定matrix.lengthn; 否则,将x值赋值给n.

因此,例如,如果x[],则代码设置matrix指向相同的空数组x并设置n0(matrix.length在赋值之后).其他例子(我在编辑你的问题之前写过这些例子):如果x"foo",它设置matrix"foo"并设置n3(lengthof of matrix).如果x""(假值),则设置matrix"" 设置n"".如果x{foo:"bar"},则设置matrix为引用同一对象并设置nundefined(因为对象没有length属性).你明白了.

上面的#2是因为&&它不仅仅是一个简单的逻辑AND运算符.a && b像这样工作:

  1. 评估a以获得其价值; 让我们称之为a值
  2. 如果a值是假的,则&&运算符的结果是a值
  3. 否则,评估b并使其成为&&运算符的结果

1 "Truthy"值是任何不是"虚假"的值.该falsy值0,null,undefined,"",NaN,当然,false.