日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

淺談JavaScript 聲明提升

瀏覽:149日期:2023-10-13 17:34:05

1 引例及基本原理

在學習JavaScript聲明提升之前,我們先看下面這個例子:

console.log(a);var a=2;

運行結(jié)果會是什么?你可能會有以下的猜測:

1.報錯ReferenceError: a is not defined;

2.打印2;

3.打印undefined。

正確的結(jié)果是第三種,打印undefined。

下面讓我們來看看具體的原因。其實,對于var a=2;這條語句,JavaScript會將其視為兩個聲明:

定義聲明var a,會在編譯階段進行; 賦值聲明a=2,會留在原地等待執(zhí)行階段進行。

而所謂的聲明提升:就是JavaScript會把var變量聲明和函數(shù)聲明都會被提升到各自作用域的頂部,而賦值操作并不會被提升。因此,上面的例子實際是按照這樣的流程來處理:

var a;console.log(a);a=2;

我們還需要知道,不僅僅是var變量聲明會提升,函數(shù)聲明同樣也會提升,現(xiàn)在來看下面這個例子

foo();function foo(){ console.log(a); var a=2;}

這個例子的運行結(jié)果為:打印undefined。這段代碼實際上會被理解為為下面的形式:

function foo(){ var a; console.log(a); a=2;}foo();

2 關(guān)于聲明提升的常見問題

2.1 函數(shù)表達式

先看一個函數(shù)表達式的例子:

console.log(foo);var foo=function(){}

上面代碼的運行結(jié)果為:打印undefined。實際上,變量標識符foo被提升了,但它的賦值操作并沒有被提升,我們可以理解為下面的形式:

var foo;console.log(foo);foo=function(){}

結(jié)論:函數(shù)聲明會被提升,但函數(shù)表達式不會被提升。

2.2 聲明的優(yōu)先級

如果在同一個作用域內(nèi),存在同名的函數(shù)聲明和var變量聲明,那么會發(fā)生什么樣的情況呢?我們同樣再來看一個例子:

function a(){}var a;console.log(a);

var a;function a(){}console.log(a);

上面的兩種寫法,運行結(jié)果均為打印a(){}。也就是說,如果在同一個作用域內(nèi),存在同名的函數(shù)聲明和var變量聲明,則函數(shù)聲明的優(yōu)先級更高。還有一種情況:如果同一個作用域內(nèi),存在多個同名的函數(shù)聲明。這種情況下,后面聲明的會覆蓋前面聲明的。

3 練習題

3.1 第一題

var getName = function() { console.log(1);}function getName() { console.log(2);}getName();

答案:打印1

解析:提升后的順序如下

var getName;//與函數(shù)聲明同名,故失效function getName() { console.log(2);}getName = function() {//賦值 console.log(1);};getName();

3.2 第二題

var a = 1;function b(){ a = 10; return; function a(){ console.log(a); } }b();console.log(a);

答案:打印1

解析:首先,我們需要梳理清楚聲明的提升。本題有幾個關(guān)鍵點,我們需要明白:

函數(shù)b內(nèi)的a函數(shù)雖然在return之后,但它并沒有失效,它會發(fā)生聲明提升,從而提升到b函數(shù)作用域的頂部。

很多童鞋(比如我TAT)可能會錯誤地認為這題的答案是10,認為我們在最后調(diào)用了b函數(shù),修改了全局變量a。實際上,由于函數(shù)a發(fā)生了聲明提升,導致在函數(shù)b內(nèi)“遮蔽”了全局作用域中的變量a,因此,a=10;其實是將函數(shù)a重新賦值。為了進一步測驗,大家可以把a函數(shù)注釋掉,會發(fā)現(xiàn)此時的答案就變成了10。

注:本題還涉及到了閉包的相關(guān)知識,這一題詳細的解析請見參考資料[2],講得非常詳細。

var a;//全局變量a發(fā)生了聲明提升function b(){ function a(){//函數(shù)a發(fā)生聲明提升 console.log(a); } a = 10;//因為函數(shù)a離它最近,因此賦值給函數(shù)a return; }a = 1;//賦值給了全局變量ab();console.log(a);

4 參考資料

[1] 《你不知道的JavaScript》

[2] js中變量名與函數(shù)名重名的問題,Charles_Tian

[3] 函數(shù)聲明與變量聲明的提升機制優(yōu)先級問題,一個菜鳥的奮斗史

以上就是淺談JavaScript 聲明提升的詳細內(nèi)容,更多關(guān)于JavaScript 聲明提升的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费在线观看一区二区三区| 日韩va欧美va亚洲va久久| 欧美www视频在线观看| 蜜桃视频第一区免费观看| 美女久久久久| 视频一区二区三区入口| 秋霞影院一区二区三区| 不卡一区2区| 久久成人一区| 国产精一区二区| 欧美日韩视频免费观看| 免费日韩精品中文字幕视频在线| 亚洲精品va| 日韩午夜精品| 亚洲精品伦理| 国产不卡精品在线| 欧美特黄一区| 色婷婷色综合| 蜜桃视频第一区免费观看| 精品九九在线| 欧美精品中文字幕亚洲专区| 久久精品国产www456c0m| 国产午夜久久av| 久久成人亚洲| 成人美女视频| 婷婷综合电影| 日本在线啊啊| 99久久婷婷这里只有精品| 九一精品国产| 欧美一区免费| 亚洲三级网址| 亚洲一级影院| av免费不卡国产观看| 日韩欧美精品一区| 免费精品视频| 91成人在线网站| 成人一区而且| 亚洲一级在线| 日韩不卡在线观看日韩不卡视频| 久久青草久久| 午夜欧美在线| 先锋影音国产一区| 激情欧美一区| 欧美欧美黄在线二区| 最新中文字幕在线播放| 久久久精品久久久久久96| 久久福利一区| 久久亚洲图片| 日韩高清一区| 国产精品久久久网站| 亚洲播播91| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲人成高清| 成人小电影网站| 蜜桃久久av一区| 精品精品99| 国产精品嫩草99av在线| 欧美日韩一区二区三区四区在线观看| 美女av在线免费看| 国产美女视频一区二区| 欧美一区影院| 欧美精品不卡| 国产精品7m凸凹视频分类| 日本午夜精品久久久| 97精品在线| 免费av一区| 国产精品啊v在线| av高清一区| 在线观看亚洲精品福利片| 蜜臀国产一区| 久久精品凹凸全集| 一本色道久久精品| 91av亚洲| 国产精品视频一区二区三区| 国产精品试看| 日韩.com| 日韩动漫一区| 国产日产一区| 久久久久久夜| 97成人在线| 999国产精品| 最新国产精品久久久| 一区二区小说| 国产日韩欧美三级| 噜噜噜久久亚洲精品国产品小说| 久久精品国产亚洲aⅴ| 蜜臀av性久久久久蜜臀aⅴ流畅| 91欧美国产| 国产精品超碰| 日韩高清不卡一区二区| 欧美aa在线观看| 美女av一区| 欧美久久香蕉| 亚洲资源网站| 先锋亚洲精品| 国产一级一区二区| 精品欧美激情在线观看| 欧美日韩视频网站| 成人欧美一区二区三区的电影| 日本午夜精品| 日韩欧美在线精品| 中文国产一区| 精品日韩毛片| 亚洲手机在线| 国产一区二区三区四区大秀| 欧美 日韩 国产一区二区在线视频 | 欧美影院视频| 视频小说一区二区| 亚洲大全视频| 亚洲网站视频| 热三久草你在线| caoporn视频在线| 国产欧美日韩免费观看| 国产乱码精品一区二区三区亚洲人| 久久99伊人| 蜜臀久久99精品久久久画质超高清| 亚洲成人免费| 丝袜美腿亚洲色图| 国产精品一区二区三区四区在线观看| 亚洲久久在线| 欧美在线看片| 视频小说一区二区| 国产日韩欧美一区二区三区在线观看 | 日本亚州欧洲精品不卡| 婷婷精品视频| 亚洲a在线视频| 日韩久久一区二区三区| 日韩国产欧美| 欧美日韩水蜜桃| 老司机免费视频一区二区三区| 国产日韩免费| 久久高清免费| 日韩高清在线不卡| 欧美日韩亚洲国产精品| 国产成人久久精品一区二区三区| 精品中文字幕一区二区三区 | 桃色一区二区| 日韩欧美精品| 激情综合亚洲| 鲁大师影院一区二区三区| 亚洲视频国产| 日本免费在线视频不卡一不卡二| 国产伦精品一区二区三区千人斩 | 国产va免费精品观看精品视频| 免费在线观看一区| 另类专区亚洲| 午夜久久tv| 日韩毛片网站| 精品一区免费| 综合激情五月婷婷| 热久久免费视频| 久久超碰99| 免费久久精品视频| 丁香婷婷久久| 国产精品美女午夜爽爽| 亚洲伊人精品酒店| 日韩不卡在线| 超碰成人av| 亚洲精品欧美| 激情亚洲影院在线观看| 欧美精选一区二区三区| 视频精品一区二区| 国产免费av国片精品草莓男男| 精品精品99| 欧美日韩高清| 久久99国产精品视频| 日韩一区欧美二区| 精精国产xxxx视频在线野外 | 老色鬼精品视频在线观看播放| 亚洲国产一区二区在线观看 | 亚洲最大av| 蜜桃视频欧美| 精品欧美一区二区三区在线观看| 亚洲欧洲午夜| 国产视频一区二| 国产色综合网| 亚洲精品成人图区| 国产精品一二| 国产成人精品一区二区免费看京| 六月婷婷综合| 日本欧美在线看| 久久精品一本| 日韩啪啪电影网| 视频一区在线视频| 精品久久久亚洲| 丝袜美腿亚洲色图| 视频在线不卡免费观看| 亚洲欧美日本日韩| 国产精品白丝av嫩草影院| 激情欧美亚洲| 日韩欧美网址| 久久精品亚洲| 91精品一区国产高清在线gif | 国产免费成人| 国产成人精品一区二区三区在线| 蜜桃精品在线| 老鸭窝毛片一区二区三区| 91国内精品| 亚洲欧美日韩高清在线| 国产欧美日本|