如何解释以下javascript代码段结果?

时间:2018-10-16 09:42:46

标签: javascript

t = 1
c = [1,2,3,4]
1 !== t && 2 !== t || (c[t] = 1)

结果输出c:[1,1,3,4],第3行的运行顺序是什么?

2 个答案:

答案 0 :(得分:0)

if ( !(1 !== t && 2 !== t) ) 
    c[t] = 1;

与以下相同:

if (t === 1 || t === 2)
    c[t] = 1;

因此,基本上,如果t等于1或等于2,则它将c [t]设置为1。
c [t]是c [1],它是数组中的第二个值。因此它曾经是2,然后被设置为1。

答案 1 :(得分:0)

1 !== t为假,因为t等于1。 因此2 !== t不会得到评估。 它立即跳到||。 (OR)条款 (c[t]=1) 由于t = 1,因此c [t] = 1将数组c中的第二个元素设置为值1。 然后,其周围的()进行评估并返回结果,因此c被记录到控制台。 由于我们将c内的第二个值更改为1,我们得到了[1,1,3,4]