为什么以下JavaScript代码无效?

时间:2018-03-12 17:26:56

标签: javascript

在chrome控制台中执行以下代码时

generate_the_sentence(doc,root,init_track,call_from)   File "main.py", line 161, in generate_the_sentence

generate_the_sentence(doc,right_ST,init_track,call_from)   File "main.py", line 155, in generate_the_sentence

write_to_output_file(subj_rel[0],subj_rel[1],[right_ST]) TypeError: 'NoneType' object is not subscriptable

它表示最后一个语句的错误“无效的左侧分配”。 但是当我们执行下面给出的代码时,它接受它并且不会显示任何错误。

let a, b, c;
b = 2;
a = b+1 = c = 2+3;

赋值'='是一个运算符,所以根据javascript中的运算符优先级,它应该可以正常工作。你们怎么想?问题是什么?

3 个答案:

答案 0 :(得分:1)

您需要做的第一个代码

let a,b,c;
b=2;
a=b+1;
c=5;

  

a = b = c = 2 + 3

有效,因为你没有改变最后一个

左边的值

答案 1 :(得分:1)

=运算符首先计算右侧,并要求左侧为lvalue

在每个赋值运算符的第二个示例中,左侧始终是变量,因此它可以正常工作。但在第一个例子中:

  

让a,b,c;

  b = 2;

  a = b + 1 = c = 2 + 3;

你试图将5分配到b+1,它根本不是变量。

答案 2 :(得分:0)

您只需要一些括号就可以清楚地表达您的意思:

 a = 1 + (b = c = 2+3);