首頁  >  文章  >  web前端  >  Javascript全域變數var與不var的差異深入解析_基礎知識

Javascript全域變數var與不var的差異深入解析_基礎知識

WBOY
WBOY原創
2016-05-16 17:10:191116瀏覽

相信你對全域變數一定不陌生,在函數作用域裡用a=1這種形式定義的變數會是一個全域變量,在全域作用域裡,用下面3種形式都可以創建對全域可見的命名:

複製程式碼 程式碼如下:

<script><BR>var a = 1;<BR>b = 2;<BR>window.c = 3;<BR></script>

對於b=2這種方式,它其實和c是一樣的,在執行這個賦值語句的時候,會沿著作用域鏈尋找名字叫做b的變量,一直找到作用域鏈的頂端還沒有找到,於是給window添加一個屬性b然後賦值。

var與不var有兩個差別:

1 var的全域變數不能被刪除,因為delete智慧型刪除物件的可刪除的屬性,而透過var 定義的全域屬性會被標示為不可刪除。需要說明的是,delete不成功並不會拋錯,delete的回傳值是true|false。

2 var定義的全域變數會被提升,而不用var定義的全域變數不會被提升。可以看下面程式的執行結果:

複製程式碼 程式碼如下:

<script><BR>alert(a);<BR>var a=1;<BR></script>

複製程式碼



複製程式碼

複製程式碼複製程式碼複製程式碼複製程式碼複製程式碼複製碼> 程式碼如下:<script><🎜>alert(a);//error, a undefined<🎜>a=1;<🎜></script>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn