Javascript中对此行的解释是什么?
var x[],matrix[],n;
...
n = (matrix = x) && matrix.length;
Run Code Online (Sandbox Code Playgroud)
尽管我搜索了它,但我找不到任何提示.
谢谢
它这样做:
x为matrix; matrix = x表达式的结果是指定的值(所有赋值表达式都是如此).我们称这个值为"x值".我不想x从这里开始调用它,因为x只评估一次.matrix.length为n; 否则,将x值赋值给n.因此,例如,如果x是[],则代码设置matrix指向相同的空数组x并设置n为0(matrix.length在赋值之后).其他例子(我在编辑你的问题之前写过这些例子):如果x是"foo",它设置matrix为"foo"并设置n为3(lengthof of matrix).如果x是""(假值),则设置matrix为"" 并设置n为"".如果x是{foo:"bar"},则设置matrix为引用同一对象并设置n为undefined(因为对象没有length属性).你明白了.
上面的#2是因为&&它不仅仅是一个简单的逻辑AND运算符.a && b像这样工作:
a以获得其价值; 让我们称之为a值&&运算符的结果是a值b并使其成为&&运算符的结果1 "Truthy"值是任何不是"虚假"的值.该falsy值0,null,undefined,"",NaN,当然,false.