1

收到同事的询问。我无法回答这个问题。

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

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

另一种情况

var x == '7';

浏览器:语法错误:缺失;声明之前

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

问题 :

  1. 第一个场景如何执行?
4

3 回答 3

4
x == '7'

该行是一个布尔表达式。它的值被计算并简单地丢弃。有些人鼓励使用尤达条件

if(7 == x)

代替

if(x == 7)

这样您就不会意外键入if(x = 7)并让自己难以找到错误。

这个

var x == '7'

另一方面,应该是一个变量声明,所以==操作符在这里是非法的。

于 2013-01-28T09:38:12.180 回答
1

Javascriptx=='7'视为(x=='7').

基本上你有:

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

Js 引擎评估false. 然后转到下一条指令。

于 2013-01-28T09:39:29.083 回答
0

== 不是赋值,它是一个布尔表达式。

我怀疑浏览器看到返回值从未使用过,甚至通过不执行此位进行优化。

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

于 2013-01-28T09:39:31.923 回答