为什么以下无效的JavaScript?
if (var foo = (true || false)) {
console.log(foo);
}
答案 0 :(得分:2)
当您在JavaScript中声明变量时,赋值将返回新变量的值,因此您可以执行以下操作:
if (foo = (true||false)) console.log('Hello!');
> Hello!
现在,如果您致电foo
,则其值为true
:
console.log(foo);
> true
你不能使用var
私有字,因为if
是一个声明,而不是一个函数。如果你想确定变量的范围,那么你必须先声明它:
var foo;
if (foo = (true||false)) console.log('Hello!');
> Hello!
答案 1 :(得分:1)
看看这里:
http://www.ecma-international.org/ecma-262/5.1/#sec-12.5
然后在这里:
http://www.ecma-international.org/ecma-262/5.1/#sec-11
并得出结论,由于以下原因语法无效:
http://www.ecma-international.org/ecma-262/5.1/#sec-12.2
与上述相关(或缺乏)。
答案 2 :(得分:0)
试试这个:
var foo = true || false;
if (foo) {
console.log(foo);
}
首先放置声明,然后检查条件。
答案 3 :(得分:0)
你可以这样做:
var foo;//declare the variable first
if (foo = (true || false)) { //then assign the value for foo
console.log(foo);
}
你不能在if语句中创建变量声明。