亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

深入理解javascript變量聲明

2019-11-20 13:54:07
字體:
來源:轉載
供稿:網友

相對于C/C++來說,ECMAScript里的for循環并不能創建一個局部的上下文。

復制代碼 代碼如下:

for (var k in {a: 1, b: 2}) {
  alert(k);
}

alert(k); // 盡管循環已經結束但變量k依然在當前作用域
任何時候,變量只能通過使用var關鍵字才能聲明。
 
上面的賦值語句:
 
a = 10;
這僅僅是給全局對象創建了一個新屬性(但它不是變量)?!安皇亲兞俊辈⒉皇钦f它不能被改變,而是指它不符合ECMAScript規范中的變量概念,所以它“不是變量”(它之所以能成為全局對象的屬性,完全是因為javascript中存在一個global對象,這樣的操作不是聲明一個變量而是給global對象增加一個a屬性。
 
下面看一個簡單的例題來說明問題

復制代碼 代碼如下:

if (!("a" in window)) {
    var a = 1;
}
alert(a);

首先,所有的全局變量都是window的屬性,語句 var a = 1;等價于window.a = 1;
 
你可以用如下方式來檢測全局變量是否聲明
 
"變量名稱" in window

第二,所有的變量聲明都在范圍作用域的頂部,看一下相似的例子:
 

復制代碼 代碼如下:

alert("a" in window);
var a;

此時,盡管聲明是在alert之后,alert彈出的依然是true,這是因為JavaScript引擎首先會掃墓所有的變量聲明,然后將這些變量聲明移動到頂部,最終的代碼效果是這樣的:

復制代碼 代碼如下:

var a;
alert("a" in window);

第三,你需要理解該題目的意思是,變量聲明被提前了,但變量賦值沒有,因為這行代碼包括了變量聲明和變量賦值。

你可以將語句拆分為如下代碼:

復制代碼 代碼如下:

var a;    //聲明
a = 1;    //初始化賦值

所以總結起來就是當變量聲明和賦值在一起用的時候,JavaScript引擎會自動將它分為兩部以便將變量聲明提前,不將賦值的步驟提前是因為他有可能影響代碼執行出不可預期的結果。

題目中的代碼相當于:

復制代碼 代碼如下:

var a;
if (!("a" in window)) {
    a = 1;
}
alert(a);

根據上述例題的分析,聲明變量時如果是聲明的局部變量前面一定要加var,如果聲明的是全局變量可以不加var(最好限制全局變量的個數,盡量使用局部變量)

下面講述一個使用var的幾個特性

使用var語句多次聲明一個變量不僅是合法的,而且也不會造成任何錯誤。
如果重復使用的一個聲明有一個初始值,那么它擔當的不過是一個賦值語句的角色。
如果重復使用的一個聲明沒有一個初始值,那么它不會對原來存在的變量有任何的影響。
沒有var聲明的變量,是作為全局變量存在的;有var聲明的變量,屬于局部變量,尤其是在函數內部。并且,經過測試,帶var聲明比不帶var速度要快。函數內盡量多設局部變量,這樣即安全又快速,變量操作也更加合理,不會因為函數內胡亂操作全局變量而導致邏輯錯誤。

聲明對象時最好使用對象自面量的方式,這樣的速度相對new的方式要快很多。

變量名是自己取的,為了照顧語義和規范,變量名可能稍長,但是注意了,變量名的長度也會影響代碼的執行速度。長的變量名聲明的執行速度沒有短的快。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美在线播放| 日韩美女在线观看| 国产成人91久久精品| 亚洲欧美在线磁力| 欧美大奶子在线| 国产欧美精品在线播放| 久久高清视频免费| 中文字幕亚洲二区| 国产精品入口夜色视频大尺度| 亚洲第一国产精品| 欧美一区深夜视频| 福利一区视频在线观看| 国产精品中文在线| 久久伊人91精品综合网站| 日韩精品视频在线免费观看| 91精品国产自产在线| 欧美国产精品人人做人人爱| 亚洲色图17p| 日韩精品中文字幕有码专区| 宅男66日本亚洲欧美视频| 国产精品自产拍高潮在线观看| www.欧美三级电影.com| 日本高清视频一区| 亚洲精品98久久久久久中文字幕| 超在线视频97| 国产精品免费观看在线| 久久亚洲国产精品成人av秋霞| 国产精品偷伦一区二区| 国产精品∨欧美精品v日韩精品| 国产精品欧美久久久| 欧美超级乱淫片喷水| 国产精品永久免费在线| 久久久久久噜噜噜久久久精品| 亚洲欧美国内爽妇网| 日韩国产欧美区| 日韩电影免费观看在线| 日韩精品在线免费播放| 欧美日韩一区二区免费在线观看| 久久精品视频va| 久久久国产精品x99av| 7777kkkk成人观看| 亚洲欧美一区二区激情| 精品国产一区二区三区久久狼5月| 久久久久久久久久久成人| 色悠悠久久久久| 中文国产亚洲喷潮| 国外日韩电影在线观看| 国语自产精品视频在线看抢先版图片| 8090成年在线看片午夜| 日av在线播放中文不卡| 欧美性理论片在线观看片免费| 亚洲国产欧美精品| 51ⅴ精品国产91久久久久久| 日韩美女视频在线观看| 91欧美精品成人综合在线观看| 正在播放国产一区| 精品欧美aⅴ在线网站| 日韩亚洲欧美成人| 欧美在线性视频| 精品小视频在线| 成人免费高清完整版在线观看| 国产精品成人播放| 日本亚洲欧洲色α| 国产成人97精品免费看片| 亚洲网站在线看| 精品日韩美女的视频高清| 欧美限制级电影在线观看| 国产香蕉精品视频一区二区三区| 7m精品福利视频导航| 亚洲欧美中文在线视频| 欧美日韩国产丝袜美女| 国产精品亚洲精品| 亚洲人成网7777777国产| 国产福利视频一区二区| 欧美大全免费观看电视剧大泉洋| 久久精品国产久精国产思思| 久久精品成人欧美大片古装| 亚洲成**性毛茸茸| 欧美片一区二区三区| 亚洲欧美在线一区二区| 久久6免费高清热精品| 自拍偷拍亚洲欧美| 日韩美女毛茸茸| 日本伊人精品一区二区三区介绍| 亚洲人成网在线播放| 91久久精品国产91久久| 久久久www成人免费精品张筱雨| 国产免费一区二区三区在线能观看| 欧美性猛交xxxx富婆| 亚洲欧美一区二区三区四区| 国产视频精品自拍| 夜夜嗨av色综合久久久综合网| 91网站在线看| 欧美中文字幕在线播放| 亚洲精品视频二区| 国产成人小视频在线观看| 精品亚洲aⅴ在线观看| 欧美日韩一区二区免费在线观看| 久久成人18免费网站| 97久久超碰福利国产精品…| 97国产真实伦对白精彩视频8| 日韩欧美在线视频| 久久久久一本一区二区青青蜜月| 成人午夜高潮视频| 国内精品国产三级国产在线专| 中文字幕亚洲第一| 国产在线精品成人一区二区三区| 成人亚洲欧美一区二区三区| 久久中文字幕一区| 国产精品久久久久久网站| 欧美精品中文字幕一区| 日韩av在线网| 久久躁狠狠躁夜夜爽| 日韩欧美国产一区二区| 最好看的2019的中文字幕视频| 欧美疯狂做受xxxx高潮| 国产精品久久久久久久久久三级| 欧洲亚洲免费视频| 国产美女扒开尿口久久久| 欧美电影第一页| 亚洲精品国偷自产在线99热| 国产美女被下药99| 欧美精品一区在线播放| 欧美成人网在线| 日韩国产中文字幕| 久久99精品国产99久久6尤物| 亚洲日韩中文字幕| 亚洲一级黄色av| 亚洲福利视频专区| 91超碰中文字幕久久精品| 主播福利视频一区| 国产精品丝袜白浆摸在线| 亚洲黄色成人网| 日韩成人激情在线| 国产精品久久久久av免费| 国产一区二区三区在线观看视频| 精品久久久久久亚洲精品| 欧美性猛交xxxx黑人猛交| 亚洲精品美女久久久久| www.精品av.com| 色偷偷噜噜噜亚洲男人的天堂| 国产精品中文字幕在线观看| 欧美肥臀大乳一区二区免费视频| 狠狠色狠狠色综合日日五| 久久久成人精品视频| 亚洲成人精品在线| 色在人av网站天堂精品| 欧美日韩在线另类| 日本免费一区二区三区视频观看| 九九综合九九综合| 国产成人av网址| 国产欧美精品在线播放| 欧美精品第一页在线播放| 丝袜一区二区三区| 亚洲va欧美va国产综合久久| 欧美一级大片在线观看| 欧美黑人狂野猛交老妇| x99av成人免费| 亚洲午夜激情免费视频| 精品国产1区2区| 一区二区在线免费视频| 亚洲乱码国产乱码精品精| 久久精品人人做人人爽| 日韩麻豆第一页|