2014-09-03 138 views
2

为什么下面的JavaScript无效?在JavaScript语句中声明变量

if (var foo = (true || false)) { 
    console.log(foo); 
} 
+0

你期望这段代码做什么? – Lix 2014-09-03 11:38:57

+0

将“true”记录到控制台。 – Ben 2014-09-03 11:39:41

+0

你能解释你如何期待这个输出吗?你如何相信这段代码应该被执行?你为什么认为一个变量*赋值*会返回一个布尔值? – Lix 2014-09-03 11:40:13

回答

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! 
0

试试这个:

var foo = true || false; 
if (foo) { 
    console.log(foo); 
    } 

放置声明,然后再检查的条件。

0

你可以这样做:

var foo;//declare the variable first 
if (foo = (true || false)) { //then assign the value for foo 
    console.log(foo); 
} 

if语句无法里面创建变量声明。