为什么这行在javascript中执行?

时间:2013-01-28 09:36:32

标签: javascript

从同事那里得到一个查询。我无法回答这个问题。

var x = '9'; // Line no 1
x=='7' // Line no 2
//doing something with x

第2行没有给出任何错误。

另一种情况

var x == '7';

浏览器:     SyntaxError:missing;在陈述之前

这是因为分配总是由单个'='完成。

问题:

  1. 第一种情况如何执行?

3 个答案:

答案 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)

==不是一个分配,它是一个布尔表达式。

我怀疑浏览器发现返回值从未使用过,并且甚至不执行此位进行优化。

您使用哪种浏览器(或解释器)?