1. 程式人生 > >JavaWeb一些簡單操作(六) --- JS中宣告全域性變數

JavaWeb一些簡單操作(六) --- JS中宣告全域性變數

一、JS中宣告全域性變數主要分為顯式宣告或者隱式宣告下面分別介紹。
1、使用var(關鍵字)+變數名(識別符號)的方式在function外部宣告,即為全域性變數,否則在function宣告的是區域性變數。該方式即為顯式宣告詳細如下:

<script> 
  var test = 5;//全域性變數 
  function a(){ 
    var a = 3;//區域性變數 
    alert(a); 
  } 
  function b(){ 
    alert(test); 
  } 
  //a();//呼叫a方法,那麼方法裡面的內容才會執行 
  //b();//同上 
</script
>

2、 沒有使用var,直接給識別符號test賦值,這樣會隱式的聲明瞭全域性變數test。即使該語句是在一個function內,當該function被執行後test變成了全域性變數。

<script> 
    test = 5;//全域性變數 
    function a(){ 
      aa = 3;//也是全域性變數 
      alert(test); 
    } 
    //a();  //輸出5 
    //alert(aa);//這裡也可以方法a()方法裡面的變數,因為aa是全域性變數 
  </script>

3、使用window全域性物件來宣告,全域性物件的屬性對應也是全域性變數,詳細如下:

<script> 
  window.test = 50; 
  alert(test);//輸出50 
</script>

這種方式經常被用到一個匿名函式執行後將一些函式公開到全域性。 如JQuery1.5中最末一句
程式碼如下:

window.jQuery = window.$ = jQuery;

全域性變數的優點:
可以減少變數的個數,減少由於實際引數和形式引數的資料傳遞帶來的時間消耗。
全域性變數的缺點:

(1)全域性變數儲存在靜態存貯區,程式開始執行時為其分配記憶體,程式結束釋放該記憶體。與區域性變數的動態分配、動態釋放相比,生存期比較長,因此過多的全域性變數會佔用較多的記憶體單元。

(2)全域性變數破壞了函式的封裝效能。函式象一個黑匣子,一般是通過函式引數和返回值進行輸入輸出,函式內部實現相對獨立。但函式中如果使用了全域性變數,那麼函式體內的語句就可以繞過函式引數和返回值進行存取,這種情況破壞了函式的獨立性,使函式對全域性變數產生依賴。同時,也降低了該函式的可移植性。

(3)全域性變數使函式的程式碼可讀性降低。由於多個函式都可能使用全域性變數,函式執行時全域性變數的值可能隨時發生變化,對於程式的查錯和除錯都非常不利。
因此,如果不是萬不得已,最好不要使用全域性變數。