基於JavaScript 聲明全域變數的三種方式詳解

來源:互聯網
上載者:User

標籤:釋放   內容   java   參數   封裝   開始   1.5   函數參數   strong   

JS中聲明全域變數主要分為顯式聲明或者隱式聲明下面分別介紹。

聲明方式一:

使用var(關鍵字)+變數名(標識符)的方式在function外部聲明,即為全域變數,否則在function聲明的是局部變數。該方式即為顯式聲明詳細如下:

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

聲明方式二:

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

<script>     test = 5;//全域變數     function a(){       aa = 3;//也是全域變數       alert(test);     }     //a();  //輸出5     //alert(aa);//這裡也可以方法a()方法裡面的變數,但是需要先調用了a方法後,aa成為全域變數   </script> 

聲明方式三:

使用window全域對象來聲明,全域對象的屬性對應也是全域變數,詳細如下:

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

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

window.jQuery = window.$ = jQuery;

全域變數的優點:

可以減少變數的個數,減少由於實際參數和形式參數的資料傳遞帶來的時間消耗。

全域變數的缺點:

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

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

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

基於JavaScript 聲明全域變數的三種方式詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.