gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

es6 import會變量提升嗎

ES6 import會產(chǎn)生變量提升的現(xiàn)象。變量提升是將變量聲明提升到它所在作用域的最開始的部分。js要經(jīng)歷編譯跟執(zhí)行階段,在編譯階段的時候,會搜集所有的變量聲明并且提前聲明變量,而其他的語句都不會改變他們的順序,因此,在編譯階段的時候,第一步就已經(jīng)執(zhí)行了,而第二部則是在執(zhí)行階段執(zhí)行到該語句的時候才執(zhí)行。

es6 import會變量提升嗎

本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

變量提升

JavaScript是單線程語言,所以執(zhí)行肯定是按順序執(zhí)行。但是并不是逐行的分析和執(zhí)行,而是一段一段地分析執(zhí)行,會先進(jìn)行編譯階段然后才是執(zhí)行階段。在編譯階段階段,代碼真正執(zhí)行前的幾毫秒,會檢測到所有的變量和函數(shù)聲明,所有這些函數(shù)和變量聲明都被添加到名為Lexical Environment的JavaScript數(shù)據(jù)結(jié)構(gòu)內(nèi)的內(nèi)存中。所以這些變量和函數(shù)能在它們真正被聲明之前使用。

先從一個簡單的例子來入手:

 a = 2;  var a;  console.log(a);
登錄后復(fù)制

以上的代碼會輸出什么,假如這段代碼是從上到下執(zhí)行的話,肯定會輸出undefined,然而JavaScript卻不是自上而下執(zhí)行的語言。 這段代碼的輸出結(jié)果是2,意外嗎?那么,為什么會這樣,這個關(guān)鍵點就在于–變量提升。他會將當(dāng)前作用域的所有變量的聲明,提升到程序的頂部,因此,上面的代碼等價于以下代碼,這樣是不是就能明白一些了?

 var a;  a = 2;  console.log(a);
登錄后復(fù)制

那么我們再看一個例子:

 console.log(a);  var a = 2;
登錄后復(fù)制

這段代碼又會輸出什么?輸出2嗎? 其實這段代碼會輸出undefined。這又是為什么呢?剛剛說過,JavaScript會將變量的聲明提升到頂部,但是賦值語句是不會提升的,對于js來說,var a = 2是分為兩步解析的:

var a; a = 2;
登錄后復(fù)制

而js只會提升 var a 這句,所以剛剛的語句等價于:

 var a;  console.log(a);  a = 2;
登錄后復(fù)制

那么,為什么會有變量提升?

為什么會出現(xiàn)變量提升這個現(xiàn)象呢? 因為js與其他語言一樣,都要經(jīng)歷編譯跟執(zhí)行階段。而js在編譯階段的時候,會搜集所有的變量聲明并且提前聲明變量,而其他的語句都不會改變他們的順序,因此,在編譯階段的時候,第一步就已經(jīng)執(zhí)行了,而第二部則是在執(zhí)行階段執(zhí)行到該語句的時候才執(zhí)行。

ES6的import變量提升

ES6 import 會產(chǎn)生變量提升的現(xiàn)象。

比如以下的測試代碼,

// a.js console.log('I am a.js...') import { foo } from './b.js'; console.log(foo); // b.js console.log('I am b.js...') export let foo = 1;
登錄后復(fù)制

運行a.js,

// node -r esm a.js  I am b.js... I am a.js... 1
登錄后復(fù)制

打印的結(jié)果是先出現(xiàn)‘I am b.js…’,然后再出現(xiàn)‘I am a.js…’,這就是變量提升的現(xiàn)象。

這是因為 ES6 在語言標(biāo)準(zhǔn)層面上實現(xiàn)了模塊功能,所以當(dāng)對a.js預(yù)編譯時發(fā)現(xiàn)關(guān)鍵詞import后,先去加載b.js,所以先輸出‘I am b.js…’。

整個流程是,

es6 import會變量提升嗎

變量提升的產(chǎn)生,其實與變量對象的創(chuàng)建過程有關(guān)。

變量對象創(chuàng)建過程

變量對象(Variable Object)的創(chuàng)建,依次經(jīng)歷以下幾個步驟。

es6 import會變量提升嗎

  • 檢查當(dāng)前上下文的函數(shù)聲明,也就是使用function關(guān)鍵字聲明的函數(shù)。在變量對象中以函數(shù)名建立一個屬性,屬性值為指向該函數(shù)所在內(nèi)存地址的引用。如果函數(shù)名的屬性已經(jīng)存在,那么該屬性將會被新的引用所覆蓋。

  • 檢查當(dāng)前上下文中的變量聲明,每找到一個變量聲明,就在變量對象中以變量名建立一個屬性,屬性值為undefined。如果該變量名的屬性已經(jīng)存在,為了防止同名的函數(shù)被修改為undefined,則會直接跳過,原屬性值不會被修改。

function聲明會比var聲明優(yōu)先級更高一點。

function test() {   console.log(a);   console.log(foo());    var a = 1;   function foo() {     return 2;   } }  test();
登錄后復(fù)制

直接從test()的執(zhí)行上下文開始理解。

// 創(chuàng)建過程 testEC = {     // 變量對象     VO: {},     // 作用域鏈     scopeChain: {} }  // VO 為 Variable Object 的縮寫,即變量對象 VO = {     arguments: {...},     foo: <foo reference>    // 表示foo的地址引用     a: undefined }
登錄后復(fù)制

test()執(zhí)行的結(jié)果是,

// node -r esm demo01.js  undefined 2
登錄后復(fù)制

其實,上面的代碼demo01.js,變成了這樣的執(zhí)行順序,

function test() {     function foo() {         return 2;     }     var a;     console.log(a);     console.log(foo());     a = 1; } test();
登錄后復(fù)制

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
久久久久人妻精品一区三寸| 漂亮人妻被中出中文字幕| 韩日视频在线观看| 国产一级免费大片| 色乱码一区二区三区在线| 极品美女扒开粉嫩小泬| 美女av免费观看| 桥本有菜av在线| 免费久久久久久| a级黄色片网站| 一区二区三区国产好的精华液| 日韩精品你懂的| 午夜宅男在线视频| xxww在线观看| 午夜免费一级片| 天天做天天爱天天高潮| 欧美少妇一区二区三区| 青草全福视在线| 欧美日韩福利在线| 欧美精品久久久久久久免费| 999在线观看视频| www国产黄色| 怡红院亚洲色图| av磁力番号网| 怡红院av亚洲一区二区三区h| 91九色丨porny丨国产jk| 欧美a v在线播放| 三年中国国语在线播放免费| 精品综合久久久久| www插插插无码免费视频网站| 福利视频一区二区三区四区| 国产精品视频一区二区三区四区五区| 91国视频在线| 男人的天堂最新网址| 久久久99精品视频| 男人天堂成人在线| 精品一区二区三区毛片| 自慰无码一区二区三区| 一起操在线视频| 黄色一级视频片| 亚洲综合123| 亚洲中文字幕无码中文字| 午夜视频在线网站| 各处沟厕大尺度偷拍女厕嘘嘘| 五月婷婷之婷婷| 逼特逼视频在线| 成人一区二区av| 亚洲污视频在线观看| 国产不卡一区二区视频| 色91精品久久久久久久久| 国产黄色一级网站| 青春草在线视频免费观看| 日韩免费高清在线| 精品无码国模私拍视频| 91制片厂免费观看| xx欧美撒尿嘘撒尿xx| 亚洲 高清 成人 动漫| 精品一区二区三区毛片| 天堂网在线免费观看| 国产无套内射久久久国产| 97视频在线免费| 日本在线视频www色| 久久婷婷中文字幕| 日本激情综合网| 天天爽天天爽夜夜爽| 欧美亚洲国产成人| 18岁网站在线观看| 久久久一本二本三本| 精品国产一区三区| 国产3p露脸普通话对白| 婷婷无套内射影院| 日韩日韩日韩日韩日韩| 国产色一区二区三区| 国产综合中文字幕| 亚洲熟妇av日韩熟妇在线| 男人添女荫道口图片| 成人性生活视频免费看| 国产婷婷一区二区三区| 欧美精品卡一卡二| www.浪潮av.com| 爱情岛论坛成人| 爱豆国产剧免费观看大全剧苏畅| 亚洲精品综合在线观看| 国产日产欧美一区二区| 欧美无砖专区免费| 日本欧美黄色片| 欧美私人情侣网站| www.国产视频.com| 欧美交换配乱吟粗大25p| 国产 日韩 欧美在线| 欧美 日韩精品| 国产原创精品在线| 日韩人妻一区二区三区蜜桃视频| 国产曰肥老太婆无遮挡| 欧美黄色一级片视频| 国产乱码一区二区三区四区| 永久免费看av| av动漫在线观看| 天堂在线精品视频| 免费在线观看亚洲视频| 中文字幕视频三区| 免费网站永久免费观看| 啊啊啊国产视频| 日韩亚洲欧美一区二区| 亚洲色图38p| 欧美视频在线第一页| 污污视频网站免费观看| 99久久免费观看| 日本肉体xxxx裸体xxx免费| 欧美中文字幕在线观看视频| 亚洲 欧美 日韩系列| 国产人妻人伦精品| 色综合天天色综合| 午夜精品久久久久久久无码| 一级一片免费播放| 亚洲 中文字幕 日韩 无码| 亚洲精品国产suv一区88| 中文字幕在线导航| 日本www在线视频| 黄色录像特级片| 91丨九色丨蝌蚪| 国产免费视频传媒| 日本www在线播放| 国产精品国三级国产av| 国产精品美女在线播放| 欧美日韩在线观看不卡| 欧美s码亚洲码精品m码| 大伊香蕉精品视频在线| japanese在线播放| 欧美 日韩 国产 在线观看| 波多野结衣作品集| 97成人在线观看视频| 欧美日韩在线一| heyzo亚洲| 欧美在线观看www| 99热在线这里只有精品| 成熟丰满熟妇高潮xxxxx视频| 成年人视频网站免费| 国产在线无码精品| 女人床在线观看| 丰满的少妇愉情hd高清果冻传媒| 国产又爽又黄ai换脸| 黄色网络在线观看| 日韩欧美一级在线| 日韩伦理在线免费观看| 日本网站免费在线观看| 国产精品69页| 亚洲综合av在线播放| 国产四区在线观看| 国产亚洲黄色片| 日本不卡在线观看视频| 热久久精品免费视频| 玖玖爱视频在线| 日韩最新中文字幕| 亚洲人成无码网站久久99热国产 | 在线观看日本一区二区| 天天爽夜夜爽一区二区三区| 亚洲男人天堂av在线| 欧美性猛交xxxx乱大交91| 9色视频在线观看| 日韩xxxx视频| av免费中文字幕| 日韩av加勒比| 日本十八禁视频无遮挡| 五月天婷婷激情视频| 干日本少妇视频| 麻豆av免费在线| 日韩不卡一二区| 欧美日韩在线不卡视频| 自拍一级黄色片| 国产特级黄色大片| 天堂av.com| 日本www在线播放| 污污视频在线免费| 欧美v在线观看| 好吊色视频988gao在线观看| 日韩人妻精品无码一区二区三区| av中文字幕网址| 国产免费毛卡片| 水蜜桃在线免费观看| 91人人澡人人爽人人精品| 国产成人在线小视频| 中文av一区二区三区| 国产免费毛卡片| 日韩精品一区二区免费| 欧美日韩精品区别| 国产熟人av一二三区| 久久综合色视频| 国产又黄又爽免费视频| 国产wwwxx| 欧美日韩在线不卡视频| 欧美在线一区视频| 少妇高潮大叫好爽喷水| 欧美激情国内自拍| 91看片在线免费观看| 日韩精品视频一区二区在线观看| 隔壁人妻偷人bd中字| 男人天堂成人网| 视频一区二区视频| 精品少妇人妻av一区二区|