2014-09-03 137 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語句無法裏面創建變量聲明。