最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Javascript中 聲明時(shí)用"var"與不用"var"的區(qū)別

 更新時(shí)間:2013年04月15日 09:05:19   作者:  
Javascript聲明變量的時(shí)候,雖然用var關(guān)鍵字聲明和不用關(guān)鍵字聲明,很多時(shí)候運(yùn)行并沒(méi)有問(wèn)題,但是這兩種方式還是有區(qū)別的

Javascript聲明變量的時(shí)候,雖然用var關(guān)鍵字聲明和不用關(guān)鍵字聲明,很多時(shí)候運(yùn)行并沒(méi)有問(wèn)題,但是這兩種方式還是有區(qū)別的??梢哉_\(yùn)行的代碼并不代表是合適的代碼。

var num = 1;

是在當(dāng)前域中聲明變量. 如果在方法中聲明,則為局部變量(local variable);如果是在全局域中聲明,則為全局變量。

而 num = 1;

事實(shí)上是對(duì)屬性賦值操作。首先,它會(huì)嘗試在當(dāng)前作用域鏈(如在方法中聲明,則當(dāng)前作用域鏈代表全局作用域和方法局部作用域etc。。。)中解析 num; 如果在任何當(dāng)前作用域鏈中找到num,則會(huì)執(zhí)行對(duì)num屬性賦值; 如果沒(méi)有找到num,它才會(huì)在全局對(duì)象(即當(dāng)前作用域鏈的最頂層對(duì)象,如window對(duì)象)中創(chuàng)造num屬性并賦值。

注意!它并不是聲明了一個(gè)全局變量,而是創(chuàng)建了一個(gè)全局對(duì)象的屬性。

即便如此,可能你還是很難明白“變量聲明”跟“創(chuàng)建對(duì)象屬性”在這里的區(qū)別。事實(shí)上,Javascript的變量聲明、創(chuàng)建屬性以及每個(gè)Javascript中的每個(gè)屬性都有一定的標(biāo)志說(shuō)明它們的屬性----如只讀(ReadOnly)不可枚舉(DontEnum)不可刪除(DontDelete)等等。

由于變量聲明自帶不可刪除屬性,比較var num = 1 跟 num = 1,前者是變量聲明,帶不可刪除屬性,因此無(wú)法被刪除;后者為全局變量的一個(gè)屬性,因此可以從全局變量中刪除。

具體見(jiàn)以下代碼:

復(fù)制代碼 代碼如下:

// num1為全局變量,num2為window的一個(gè)屬性

                     var num1 = 1;

                     num2 = 2;

                     // delete num1;  無(wú)法刪除

                     // delete num2;  刪除

                     function model(){

                            var num1 = 1; // 本地變量

                            num2 = 2;     // window的屬性

                            // 匿名函數(shù)

                            (function(){

                                   var num = 1; // 本地變量

                                   num1 = 2; // 繼承作用域(閉包)

                                   num3 = 3; // window的屬性

                            }())

                     }

PS. 在ECMAScript5標(biāo)準(zhǔn)中,有一種“嚴(yán)格模式”(Strict Mode)。在嚴(yán)格模式中,為未聲明的標(biāo)識(shí)符賦值將會(huì)拋引用錯(cuò)誤,因此可以防止意外的全局變量屬性的創(chuàng)造。目前一些瀏覽器的新版本已經(jīng)支持。

相關(guān)文章

最新評(píng)論

通江县| 曲周县| 德清县| 临朐县| 石阡县| 自贡市| 同德县| 盐城市| 湄潭县| 西充县| 孝昌县| 尼木县| 屏东市| 江城| 瓦房店市| 化德县| 彭山县| 大足县| 尼木县| 房山区| 盐津县| 镇巴县| 永川市| 财经| 灵寿县| 河东区| 盖州市| 朝阳区| 信丰县| 自治县| 淳化县| 资溪县| 凤城市| 达拉特旗| 清苑县| 花莲县| 梓潼县| 交城县| 文昌市| 甘肃省| 抚松县|