从同事那里得到一个查询。我无法回答这个问题。
var x = '9'; // Line no 1
x=='7' // Line no 2
//doing something with x
第2行没有给出任何错误。
另一种情况
var x == '7';
浏览器: SyntaxError:missing;在陈述之前
这是因为分配总是由单个'='完成。
问题:
答案 0 :(得分:4)
x == '7'
这一行是一个布尔表达式。它的值被计算并简单地丢弃。有些人鼓励使用yoda-conditions
if(7 == x)
而不是
if(x == 7)
这样您就不会意外地输入if(x = 7)
并让自己难以找到错误。
此
var x == '7'
另一方面,应该是变量声明,因此==
运算符在这里是非法的。
答案 1 :(得分:1)
Javascript将x=='7'
视为(x=='7')
。
基本上你有:
var x = '9'; // Line no 1
false;
//doing something with x
Js引擎评估false
。然后转到下一条指令。
答案 2 :(得分:0)
==不是一个分配,它是一个布尔表达式。
我怀疑浏览器发现返回值从未使用过,并且甚至不执行此位进行优化。
您使用哪种浏览器(或解释器)?