一行Javascript代码的解释

时间:2016-08-06 11:34:05

标签: javascript

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

<div class="row">
    <div class="col-xs-6" style="background: red;">
        ..
    </div>
    <div class="col-xs-6 pull-right" style="background: orange;">
        ..
    </div>
    <div class="col-xs-6" style="background: green;">..
    </div>
</div>

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

谢谢

2 个答案:

答案 0 :(得分:8)

这样做:

  1. x的值指定给matrix; matrix = x表达式的结果是指定的值(所有赋值表达式都是如此)。我们称这个值为“x值”。我不想从现在开始称它为x,因为x仅评估一次。
  2. 如果x值为 truthy 1 (强制为true),则会将matrix.length分配给n;否则,将x值分配给n
  3. 例如,如果x[],则代码集matrix指向同一个空数组x,并将n设置为{ {1}}(分配后0)。其他示例(我在编辑您的问题之前编写了这些示例):如果matrix.lengthx,则会将"foo"设置为matrix并设置"foo"n3的{​​{1}})。如果lengthmatrix(假值),则会将x设置为"" matrix设置为"" }。如果n"",则设置x以引用同一个对象并将{foo:"bar"}设置为matrix(因为该对象没有n属性)。你明白了。

    上面的

    #2是因为undefined不仅仅是一个简单的逻辑AND运算符。 length的作用如下:

    1. 评估&&以获取其价值;让我们称之为a-value
    2. 如果a值为 falsy a && b运算符的结果为a-value
    3. 否则,请评估a并将其作为&&运算符
    4. 的结果

      1 “Truthy”值是任何不是“虚假”的值。虚假值为b&&0nullundefined,当然还有""

答案 1 :(得分:0)

(matrix = x)x对变量matrix的赋值操作。这里x是一个数组,因此这个操作的结果给出了一个真值,因此后面的部分发生了。

E.g。如果

var x, matrix = [], n;
n = (matrix = x) && matrix.length;

不起作用,因为(matrix = x)是一个虚假的操作。 n被分配undefined(因为这是值x)。