为什么在javascript的if()表达式中使用var是非法的?
Why is it illegal to have var inside an if() expression in javascript?
至少在V8中是这样的
if((var i = x*x) == 2){}
将给出一个关于意外的'var'关键字的错误。然而,如果var发生在if()之前,则没有错误,但我仍然在表达式中留下I的赋值。为什么有这样一个奇怪的例外?这在ECMA脚本标准的某个地方吗?是否有一个不可检测的闭包发生在if()表达式的评估中,所以留在var中会使我的赋值消失?
进一步概括,似乎var
前面必须没有非空格字符。
对您的问题的简短回答是,您不能使用变量语句作为表达式来在if中求值。
更详细的答案是,根据ECMA-262 s12.5, if语句的形式为:if ( Expression) Statement else Statement
ECMA-262 s11将表达式描述为:
PrimaryExpression :
this
Identifier
Literal
ArrayLiteral
ObjectLiteral
( Expression )
以var
开头的表达式是variablestatement (ECMA-262 s12.2),它不是上述表达式之一。
相关文章:
- 控制台返回var不是't定义,但它是
- 从var向代码隐藏函数传递值
- 如何通过引用var Using DataTables来进行分页或排序
- jQuery语法添加了var
- 如何将具有文本类型值的var放入jQuery函数中
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 当var==0时,我如何显示一个警报
- AJAX调用中的非法调用
- javascript中对象构造函数中的var属性与this.properties
- 无法在现有状态转换期间更新-未使用任何非法的setState()
- 函数中this和var之间的区别
- JavaScript-的含义:var DndUpload=函数(inputElem){};
- 如何解决这种情况下的非法调用类型错误
- Understanding Javascript scope with "var that = this&qu
- 如何使用javascript var引用Mongo DB集合's字段
- var w = q||问2;这个表达式是什么意思
- 为什么JavaScript抛出'未捕获的ReferenceError:var未定义'定义var时
- 在jquery函数内部设置来自jquery函数的var;t运行
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 为什么在javascript的if()表达式中使用var是非法的?