即使在功能塊中添加一個簡單的打印(「foo」),它也不起作用。如何使用條件語句設置變量?
<script>
var viewportHeight = $(window).height();
var X;
$(function() {
if (viewportHeight >= 600) {
var X = 100;
}
});
</script>
即使在功能塊中添加一個簡單的打印(「foo」),它也不起作用。如何使用條件語句設置變量?
<script>
var viewportHeight = $(window).height();
var X;
$(function() {
if (viewportHeight >= 600) {
var X = 100;
}
});
</script>
的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>
太棒了! – user1361747
PS。這是有效的,因爲在函數範圍中重新定義會導致創建一個局部變量,這個變量與函數外部定義的變量不同。注意關閉。 – Alfabravo
@ user1361747很高興工作!一定要將問題標記爲已回答 – lbstr
只是我的兩分錢,但你可以把這整個事情寫成一個單一的表達。
var X = $(window).height() >= 600 ? 100 : null;
這似乎是不錯的OLL速記
一個地方,你有2個不同的X變量,刪除第二個變種。 –