久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久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í)行,會先進行編譯階段然后才是執(zhí)行階段。在編譯階段階段,代碼真正執(zhí)行前的幾毫秒,會檢測到所有的變量和函數(shù)聲明,所有這些函數(shù)和變量聲明都被添加到名為Lexical Environment的JavaScript數(shù)據(jù)結構內的內存中。所以這些變量和函數(shù)能在它們真正被聲明之前使用。

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

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

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

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

那么我們再看一個例子:

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

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

var a; a = 2;
登錄后復制

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

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

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

為什么會出現(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;
登錄后復制

運行a.js,

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

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

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

整個流程是,

es6 import會變量提升嗎

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

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

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

es6 import會變量提升嗎

  • 檢查當前上下文的函數(shù)聲明,也就是使用function關鍵字聲明的函數(shù)。在變量對象中以函數(shù)名建立一個屬性,屬性值為指向該函數(shù)所在內存地址的引用。如果函數(shù)名的屬性已經(jī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();
登錄后復制

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

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

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

// node -r esm demo01.js  undefined 2
登錄后復制

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

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

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
国产精品欧美大片| 日本国产亚洲| 国产在线观看www| 美女久久久精品| 成人国产精品| 日韩一区三区| 久久精品免费一区二区三区| 日韩不卡视频在线观看| 特黄毛片在线观看| 久久久久99| 石原莉奈在线亚洲二区| 一区二区三区午夜视频| 欧美午夜三级| 国产999精品在线观看| 中文字幕在线免费观看视频| 久久人人97超碰国产公开结果| 国内激情久久| 亚洲精品高潮| 免费看久久久| 久久影院一区| 亚洲视频二区| 国产高清日韩| 欧洲亚洲一区二区三区| 国产日韩专区| 综合日韩在线| 国语精品一区| 欧美日韩国产在线观看网站| 亚洲影院天堂中文av色| 国产高清视频一区二区| 久久精品动漫| 日韩中文字幕| 亚洲女同av| 性欧美长视频| 国产伦精品一区二区三区千人斩| 三级在线看中文字幕完整版| 在线亚洲自拍| 日韩高清在线不卡| 国产h片在线观看| 国产精品试看| 久久激情五月婷婷| 久久中文字幕av| 91成人在线精品视频| 福利精品在线| 99视频精品| 你懂的亚洲视频| 婷婷成人在线| 日韩高清一级| 岛国av免费在线观看| 午夜在线播放视频欧美| 欧美另类中文字幕| 99精品国产一区二区三区| 亚洲一区有码| 亚洲爱爱视频| 久久国产三级| 亚洲va中文在线播放免费| 亚洲欧美在线综合| www.九色在线| 欧美在线首页| 亚州av乱码久久精品蜜桃| 国产亚洲一区| 日韩午夜黄色| 成人午夜亚洲| 蜜桃视频一区二区三区在线观看| 国产成年精品| 亚洲天堂免费| 久久久精品五月天| 欧美在线黄色| 99在线精品免费视频九九视| 欧美成a人片免费观看久久五月天| 999久久久精品国产| 国产日韩欧美| 91精品高清| 国产96在线亚洲| 国产图片一区| 蜜桃一区二区三区在线观看| 一本大道色婷婷在线| 欧美日韩精品一区二区三区视频 | 国产精品三p一区二区| 久久国产中文字幕| 久久av免费| 免费人成黄页网站在线一区二区| 成人国产精品一区二区网站| 日韩福利视频导航| 黄色亚洲大片免费在线观看| 精品亚洲成人| 国产精品一区二区三区美女| 免费视频一区二区| 四虎4545www国产精品 | 香蕉久久夜色精品国产| 成人日韩在线| 美女精品视频在线| 久久国内精品视频| 在线一区二区三区视频| 国产一区亚洲| 成人免费电影网址| 国产一区二区三区国产精品| 国产日韩中文在线中文字幕| 男人天堂欧美日韩| 国产综合亚洲精品一区二| 波多野结衣久久精品| 你懂的亚洲视频| 日韩和欧美一区二区三区| 亚洲国产不卡| 久久久久久免费视频| 久久99高清| 欧美极品中文字幕| 日韩国产一二三区| 亚洲性视频在线| 亚洲欧洲日本mm| 午夜视频精品| 欧美精品一卡| 女人天堂亚洲aⅴ在线观看| 色综合www| 亚洲国产福利| 亚洲天堂av影院| 欧美aa在线观看| 成人羞羞视频在线看网址| 国产在线一区不卡| 欧美激情网址| 成人在线视频区| 国产aa精品| 国产精品久久久久蜜臀| 国产精品成人**免费视频| 青青国产91久久久久久| 日韩不卡一区二区三区| 午夜精品福利影院| 日韩精选在线| 国产欧美日韩| 国产精品v日韩精品v欧美精品网站| 日韩高清二区| 国产精品综合| 国内精品亚洲| 国产一区二区三区四区五区| 精品伊人久久久| 在线看片国产福利你懂的| 欧美成人a交片免费看| 韩国三级一区| 国产综合视频| 丝瓜av网站精品一区二区| 久久福利一区| 亚洲va久久| 国产美女精品视频免费播放软件| 国产精品成人自拍| 97人人精品| 亚洲精品一二三区区别| 亚洲精品在线二区| 国产精品亚洲二区| 麻豆高清免费国产一区| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 久久亚洲视频| 日韩高清国产一区在线| 国产精品亚洲欧美| а√在线中文在线新版| 日韩免费看片| 欧美日韩精品一本二本三本| 蜜臀a∨国产成人精品| 国产伦精品一区二区三区在线播放 | 欧美影院精品| 久久精品国产网站| 久久久久99| 亚洲资源在线| 国产一区二区三区四区| 国产高清一区| 欧美欧美黄在线二区| 98精品久久久久久久| 黄色国产精品| 日韩不卡一区二区| 色在线视频观看| 日韩精品一二三| 久久av偷拍| 91精品99| 国产精品一区高清| 1024精品一区二区三区| 日韩欧美中文字幕电影| 中文在线资源| 亚洲精品乱码久久久久久蜜桃麻豆| 国产黄色一区| 91久久久精品国产| 欧美日韩一区自拍| 激情欧美丁香| 欧美日本不卡| av综合电影网站| 日韩精品第二页| 日韩精品不卡一区二区| 亚洲精品三级| 欧美日韩免费观看视频| 日本伊人久久| 伊人久久高清| 久久国产人妖系列| 婷婷成人在线| 国产劲爆久久| 中文一区二区| 国产一区二区三区不卡视频网站| 国产美女精品| 久久久国产精品入口麻豆| 欧美在线亚洲综合一区| 久久精品凹凸全集| 一区福利视频| 国产成人精品一区二区三区免费| 久久高清一区|