[英]Why the alert doesn't work?
我想知道在聲明變量是否使用var
時有什么區別。 我用下面的代碼:
<body>
<h1>New Web Project Page</h1>
<script type="text/javascript">
function test(){
a = "hello";
var b="world";
}
alert(a);
alert(b);
</script>
</body>
為什么警報不起作用以及在JavaScript中使用var
聲明變量時有什么區別。
alert
不起作用,因為,在的情況下, b
,它並沒有在正確的范圍和的情況下,存在a
還沒有被實例化還沒有,因為你沒有調用的函數test
var
創建一個變量,該變量在調用它的作用域內是局部的。 如果沒有var,則創建一個全局變量。
function fn ( ) {
var x = 0; // this variable is local to the function fn
y = 10; // this variable is global and can be accessed
// from anywhere after you call fn
}
一般來說,除非有充分的理由,否則您不希望使用全局變量。 也就是說,您想使用var
創建所有變量。 僅將變量放在需要的范圍內,以便於理解和維護代碼。 它還有助於緩解“魔術變量”問題。 在哪里有變量只是出現在哪里,但對從何處不清楚。 這也使調試代碼更加容易,因為在javascript中,動態創建了不存在的變量。 但是,如果僅通過var
和諸如jsLint這樣的工具使用局部變量,則不會遇到變量名拼寫錯誤的問題,從而使您的代碼步履維艱。
聲明不帶var
的變量會使它成為全局變量,因此任何人都可以訪問它。 但是,警報不起作用的原因是由於您從未調用過test()
所以從未分配a
或b
。 如果您進行test
(在警報之前),則b
將是未定義的,並且a
應該打招呼。
您沒有調用test()
函數。 排除var
,變量將變為全局變量,因此它們可用於所有代碼。
有關使用'var'的完全相同的問題已在此處回答
關於您的警報為何不起作用的原因,是因為您沒有調用'test()'函數。 它剛剛被創建...它將什么都不做。 您需要調用它才能填充變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.