Javascript全局變量var與不var的區(qū)別深入解析
相信你對(duì)全局變量一定不陌生,在函數(shù)作用域里用a=1這種形式定義的變量會(huì)是一個(gè)全局變量,在全局作用域里,用下面3種形式都可以創(chuàng)建對(duì)全局可見的命名:
<script>
var a = 1;
b = 2;
window.c = 3;
</script>
對(duì)于b=2這種方式, 它其實(shí)和c是一樣的,在執(zhí)行這個(gè)賦值語句的時(shí)候,會(huì)沿著作用域鏈尋找名字叫做b的變量,一直找到作用域鏈的頂端還沒有找到,于是給window添加一個(gè)屬性b然后賦值。
var與不var有兩個(gè)區(qū)別:
1 var的全局變量不能被刪除,因?yàn)閐elete智能刪除對(duì)象的可刪除的屬性,而通過var 定義的全局屬性會(huì)被標(biāo)明不可刪除。需要說明的是,delete不成功并不會(huì)拋錯(cuò),delete的返回值是true|false。
2 var定義的全局變量會(huì)被提升,而不用var定義的全局變量不會(huì)被提升。可以看下面程序的執(zhí)行結(jié)果:
<script>
alert(a);
var a=1;
</script>
<script>
alert(a);//error, a undefined
a=1;
</script>
相關(guān)文章
JavaScipt基本教程之JavaScript語言的基礎(chǔ)
2008-01-01JS失效 提示HTML1114: (UNICODE 字節(jié)順序標(biāo)記)的代碼頁 utf-8 覆蓋(META 標(biāo)記)的沖突的代
今天使用F12調(diào)試的時(shí)候提示HTML1114: (UNICODE 字節(jié)順序標(biāo)記)的代碼頁 utf-8 覆蓋(META 標(biāo)記)的沖突的代碼頁 utf-8,需要的朋友可以參考下2017-06-06JavaScript學(xué)習(xí)歷程和心得小結(jié)
在過去,JavaScript只是被用來做一些簡單的網(wǎng)頁效果,比如表單驗(yàn)證、浮動(dòng)廣告等,所以那時(shí)候JavaScript并沒有受到重視。2010-08-08javascript類型系統(tǒng)——undefined和null全面了解
下面小編就為大家?guī)硪黄猨avascript類型系統(tǒng)——undefined和null全面了解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07緩動(dòng)函數(shù)requestAnimationFrame 更好的實(shí)現(xiàn)瀏覽器經(jīng)動(dòng)畫
requestAnimationFrame是什么?一直是我們大家所疑惑的,緩動(dòng)函數(shù)requestAnimationFrame 更好的實(shí)現(xiàn)瀏覽器經(jīng)動(dòng)畫,接下來將為大家詳細(xì)介紹2012-12-12javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
以下程序例子實(shí)現(xiàn)了split和整數(shù)字符串互轉(zhuǎn)的用法2009-03-03菜鳥學(xué)習(xí)JavaScript小實(shí)驗(yàn)之函數(shù)引用
由于變量b中保存的是函數(shù)的引用,當(dāng)函數(shù)變化時(shí),b也隨時(shí)變化,且不管函數(shù)出現(xiàn)的先后順序。兩次alert(b),雖然位置不一樣,但是內(nèi)容相同。2010-11-11