亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Javascript 聲明時用“var”跟不用"var"的區別

系統 1924 0

Javascript聲明變量的時候,雖然用var關鍵字聲明和不用關鍵字聲明,很多時候運行并沒有問題,但是這兩種方式還是有區別的??梢哉_\行的代碼并不代表是合適的代碼。

var num = 1;

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

?

而 num = 1;

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

注意!它并不是聲明了一個全局變量,而是創建了一個全局對象的屬性。

?

  ? 即便如此,可能你還是很難明白“變量聲明”跟“創建對象屬性”在這里的區別。事實上,Javascript的變量聲明、創建屬性以及每個Javascript中的每個屬性都有一定的標志說明它們的屬性----如只讀(ReadOnly)不可枚舉(DontEnum)不可刪除(DontDelete)等等。

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

?????? 具體見以下代碼:

?

        
          //
        
        
           num1為全局變量,num2為window的一個屬性
        
        
          var
        
         num1 = 1
        
          ;

                     num2 
        
        = 2
        
          ;

                     
        
        
          //
        
        
           delete num1;  無法刪除
        
        
          //
        
        
           delete num2;  刪除
        
        
          function
        
        
           model(){

                            
        
        
          var
        
         num1 = 1; 
        
          //
        
        
           本地變量
        
        
          
                            num2 
        
        = 2;     
        
          //
        
        
           window的屬性
        
        
          //
        
        
           匿名函數
        
        
          
                            (
        
        
          function
        
        
          (){

                                   
        
        
          var
        
         num = 1; 
        
          //
        
        
           本地變量
        
        
          
                                   num1 
        
        = 2; 
        
          //
        
        
           繼承作用域(閉包)
        
        
          
                                   num3 
        
        = 3; 
        
          //
        
        
           window的屬性
        
        
          
                            }())

                     }        
        
      

?

?

PS. 在ECMAScript5標準中,有一種“嚴格模式”(Strict Mode)。在嚴格模式中,為未聲明的標識符賦值將會拋引用錯誤,因此可以防止意外的全局變量屬性的創造。目前一些瀏覽器的新版本已經支持。

Javascript 聲明時用“var”跟不用"var"的區別


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久婷婷| 成人短视频在线观看 | 在线看片不卡 | h视频日本 | 亚洲国产精品不卡毛片a在线 | 亚洲国产精品婷婷久久久久 | 国产精品日本一区二区不卡视频 | 99自拍视频在线观看 | 国产素人在线 | 成人午夜影院在线观看 | 狠狠干夜夜爽 | 四虎永久在线精品国产 | 亚洲两性 | 日韩不卡视频在线观看 | 亚洲第一黄色网址 | 久久综合九色婷婷97 | 亚洲一区 在线播放 | 欧美激情在线观看一区二区三区 | 久久免费观看国产99精品 | 风流一代在线播放 | 久久天天躁狠狠躁夜夜躁综合 | 亚洲精品第一国产麻豆 | 首页 动漫 亚洲 欧美 日韩 | 国产婷婷综合在线视频中 | 女bbwxxxx高清 | 成人久草 | 欧美一区二区三区视视频 | 久久久亚洲天堂 | 日日操夜夜摸 | 在线看一区 | 日本人hdxxxxvideo | 九九九视频| 日日摸天天摸狠狠摸摸 | 色中色综合 | 成年女人视频免费免费看 | 久久成人在线视频 | 久久精品这里是免费国产 | 高清不卡免费一区二区三区 | 欧美片欧美日韩国产综合片 | 国产精品视频在 | 午夜伦4480yy妇女久久久 |