收到同事的询问。我无法回答这个问题。
var x = '9'; // Line no 1
x=='7' // Line no 2
//doing something with x
第 2 行没有给出任何错误。
另一种情况
var x == '7';
浏览器:语法错误:缺失;声明之前
这是因为分配总是由单个'='完成。
问题 :
- 第一个场景如何执行?
收到同事的询问。我无法回答这个问题。
var x = '9'; // Line no 1
x=='7' // Line no 2
//doing something with x
第 2 行没有给出任何错误。
另一种情况
var x == '7';
浏览器:语法错误:缺失;声明之前
这是因为分配总是由单个'='完成。
问题 :
x == '7'
该行是一个布尔表达式。它的值被计算并简单地丢弃。有些人鼓励使用尤达条件
if(7 == x)
代替
if(x == 7)
这样您就不会意外键入if(x = 7)
并让自己难以找到错误。
这个
var x == '7'
另一方面,应该是一个变量声明,所以==
操作符在这里是非法的。
Javascriptx=='7'
视为(x=='7')
.
基本上你有:
var x = '9'; // Line no 1
false;
//doing something with x
Js 引擎评估false
. 然后转到下一条指令。
== 不是赋值,它是一个布尔表达式。
我怀疑浏览器看到返回值从未使用过,甚至通过不执行此位进行优化。
您使用哪种浏览器(或解释器)?