2014-01-20 28 views
0

我發現下面的JavaScript代碼:如何在if條件中附加布爾值?

function testScope(){ 
    var myTest = true; 
    if(true){ 
     var myTest = "I am changed!" 
    } 
} 
testScope(); // will alert "I am changed!" 

我真的很困惑,如果條件而非if(myTest)布爾附着在,所以我想這可能是錯誤的,但是當如果條件if(false)是改變假提醒真實。我以前從來沒有見過這樣的人。

+0

變量名稱相同。 var myTest = true; var myTest =「我改變了!」 –

+0

那麼,你在這裏面臨的問題是什麼? – thefourtheye

+0

查看問題標題,即我需要更多關於此的描述。 –

回答

2

您正在關注代碼片段的錯誤部分:它不是試圖演示if(true)語句。它試圖展示的JavaScript如何處理變量聲明

function testScope(){ 
    var myTest = true;     // <- variable declared at function level 
    if(true){ 
     var myTest = "I am changed!" // <- variable declared at 'if' block level 
    } 
} 
testScope(); // will alert "I am changed!" 

因爲JavaScript只具有功能範圍的變量,該代碼段顯示了myTest變量被設置爲「我變了!」儘管它被宣佈爲內部變量。在某些其他語言中(例如C#,這將是編譯時錯誤)

if(true)條件是要確保if塊代碼將始終執行。

+0

感謝您的明確答覆。 –

+0

不客氣。有時很容易陷入這個例子的錯誤部分,你只需要一個快速解釋:) – jasonscript

+0

是的!你的快速示例最好理解。 ++++ –

0

您只能區分全局範圍和功能範圍。 如果條件和循環沒有自己的作用域,那麼當if語句中的條件爲真時,函數作用域變量myTest將被覆蓋(因爲它在同一範圍內重新定義)

0

if(true)應該始終監守真的是不是一個變量

Boolean對象:

布爾對象表示兩個值:truefalse

如果布爾對象沒有初始值,或者如果傳遞的值是以下之一:

0 
-0 
null 
"" 
false 
undefined 
NaN 

對象被設置爲假。對於任何其他值,它被設置爲true(即使字符串爲「false」)!

0

if(true)評估爲true的原因是因爲它是條件語句的「結果」。

var x = 1; 
var y = 2; 
if (x < y) { ... } 

x小於y,所以它歸結爲

if (true) 

所以,因爲沒有可變空調怎麼回事,你可以熬它歸結爲一個靜止狀態。