2012-05-15 54 views
0

即使在功能塊中添加一個簡單的打印(「foo」),它也不起作用。如何使用條件語句設置變量?

<script> 

var viewportHeight = $(window).height(); 
var X; 

$(function() { 

    if (viewportHeight >= 600) { 
     var X = 100; 
     } 
}); 
</script> 
+0

一個地方,你有2個不同的X變量,刪除第二個變種。 –

回答

8

var關鍵字用來創建一個變量,其範圍被分配到任何function它。如果它不是一個函數裏面,它的範圍是window,使其成爲一個全局變量。如果您省略關鍵字var,則js引擎將查找作用域鏈,以獲取最接近的變量定義。因此,通過在函數內使用var,您正在創建一個名爲X的新變量,該變量對於該函數是本地的。如果您在函數中省略了var關鍵字,它將查找範圍鏈並找到您在上面定義的var X

<script> 

var viewportHeight = $(window).height(); 
var X; 

$(function() { 

    if (viewportHeight >= 600) { 
     X = 100; //don't use var if you want to access the above X 
    } 
}); 
</script> 
+0

太棒了! – user1361747

+0

PS。這是有效的,因爲在函數範圍中重新定義會導致創建一個局部變量,這個變量與函數外部定義的變量不同。注意關閉。 – Alfabravo

+0

@ user1361747很高興工作!一定要將問題標記爲已回答 – lbstr

2

只是我的兩分錢,但你可以把這整個事情寫成一個單一的表達。

var X = $(window).height() >= 600 ? 100 : null; 

這似乎是不錯的OLL速記