有没有一种方法可以包含一个;var";在JavaScript需要表达式的地方列出?
以下代码:有没有一种方法可以包含一个;var";在JavaScript需要表达式的地方列出?,javascript,Javascript,以下代码: console.log((var a=5; ++a)); 不编译,因为var被视为语句,而不是函数。以下内容不适用: console.log((a=5, ++a)); 和预期的单词一样,输出6-但它可以处理外部名称空间。有什么方法可以使第一个代码段正常工作,而不引入闭包,如下图所示 console.log((function(a){return ++a})(5)) 这是针对针对JavaScript的编译器的,因此您的答案必须尊重Requerients。不,如果不引入函数,您就不
console.log((var a=5; ++a));
不编译,因为var
被视为语句,而不是函数。以下内容不适用:
console.log((a=5, ++a));
和预期的单词一样,输出6-但它可以处理外部名称空间。有什么方法可以使第一个代码段正常工作,而不引入闭包,如下图所示
console.log((function(a){return ++a})(5))
这是针对针对JavaScript的编译器的,因此您的答案必须尊重Requerients。不,如果不引入函数,您就不能这样做。只需在语句上方声明变量。否,至少从ECMAScript语言规范的5.1版开始,当前的现代浏览器JS基于此 当您执行
console.log(
)时,接下来是一个
它本身包含一个
赋值表达式是:
条件性压力:
LeftHandSideExpression赋值运算符赋值表达式
条件表达式是一种逻辑表达式或三元表达式,出于完整性考虑,我们鼓励您这样做,但它们并没有真正帮助我们(例如,它描述了如何定义A | | 3
,以及如何定义A&&6
)
现在,另一个分支是ConditionalExpressionNoIn
,它是三元运算符(即,?:,缩写if)。此外,一个简短的调查可以显示我们只运行表达式
另一方面,允许使用函数表达式,但对开始语句没有任何帮助
现在,另一方面,var
出现在两个地方。在a中,或在类似for explicit的迭代构造中。这两个反过来又不能出现在AssignmentExpression中
因此,正如前面的答案所建议的那样。一个符合规范的JavaScript实现不允许您要求的语法类型。在这个列表中,允许在其内部使用语句的实际上是函数表达式。关于
console.log(6)
?关于var a=5;console.log(a++)呢
?如果我可以问的话,什么编译器?ES6解决方案很酷吗?当然,这些示例会输出5
,而不是6
@Viclib ungh…为什么编译器会这样做?