簡體   English   中英

為什么警報不起作用?

[英]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()所以從未分配ab 如果您進行test (在警報之前),則b將是未定義的,並且a應該打招呼。

有關變量和作用域的大量資源。

您沒有調用test()函數。 排除var ,變量將變為全局變量,因此它們可用於所有代碼。

有關使用'var'的完全相同的問題已在此處回答

關於您的警報為何不起作用的原因,是因為您沒有調用'test()'函數。 它剛剛被創建...它將什么都不做。 您需要調用它才能填充變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM