如何:“(a = b)!= c”在Javascript中工作?

时间:2014-06-04 17:15:58

标签: javascript jquery if-statement conditional

我正在浏览jQuery代码$.extend()

我发现了这个:

    if ( (options = arguments[ i ]) != null ) {
        // Extend the base object

我想知道如果我们将options = arguments[i]移出括号会发生什么?

3 个答案:

答案 0 :(得分:1)

a = bb分配给a并返回b。因此,(a = b) != c会将b分配给a,然后检查b != c。括号是因为否则,!=将在=之前由于运算符优先级而得到评估(比较在赋值之前进行评估 - source

答案 1 :(得分:0)

分配的优先级低于平等,这意味着

arguments[i] != null

将在

之前处理
options = arguments[i]

给出与预期不同的结果。 要更好地理解它,请查看此处并阅读有关运算符优先级的信息

答案 2 :(得分:0)

 a = b!= c 

将起作用,

 a = (b != c)

因为=运算符在所有运算符中的优先级最低。

e.g。

 b = 5 
 c = 10 

 a = b != c
>>> false
>>> a will have false value here

Here是优先级图表,demo

如果是(options = arguments[ i ]) != nulloptions将被赋值为argument[ i ],然后与null进行比较。