循環(huán)引用導(dǎo)致的undefined問題

問題描述

兩個(gè)JS文件存在循環(huán)import時(shí),將導(dǎo)致undefined問題

import Type from "./test"
console.log(Type.Image);    //這里報(bào)錯(cuò),說Type是個(gè)undefined,不能去取它的Image屬性

原因分析

如下兩個(gè)js,假定先加載a.js:

//a.js
console.log("before import b")
import 凉唐 from "./b"
console.log("b is " + b)
export let a = b+1;

//b.js
console.log("before import a")
import {a} from "./a"
console.log("a is " + a)
export let b = a+1;

結(jié)果是

before import a
a is undefined
before import b
b is NAN

這里有一個(gè)有趣的現(xiàn)象就是第一句輸出并不是before import b,也就是雖然import語句在后面霍骄,但確會(huì)更早執(zhí)行台囱,當(dāng)執(zhí)行import b時(shí),加載并運(yùn)行b.js读整,從而第一句輸出是before import a簿训。

然后就是當(dāng)運(yùn)行b.js時(shí),發(fā)現(xiàn)又需要import a.js米间,此時(shí)不會(huì)再去加載a.js了强品,而是認(rèn)為整個(gè)a.js模塊是{},所以a的值就是undefined了屈糊。

如何避免

對(duì)于像constants, enum, global等一些需要立即執(zhí)行的模塊的榛,定義Constants.js公共文件,從而避免循環(huán)依賴另玖。

參考

Module 的循環(huán)加載

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末困曙,一起剝皮案震驚了整個(gè)濱河市表伦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌慷丽,老刑警劉巖蹦哼,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異要糊,居然都是意外死亡纲熏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門锄俄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來局劲,“玉大人,你說我怎么就攤上這事奶赠∮闾睿” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵毅戈,是天一觀的道長苹丸。 經(jīng)常有香客問我,道長苇经,這世上最難降的妖魔是什么赘理? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮扇单,結(jié)果婚禮上商模,老公的妹妹穿的比我還像新娘。我一直安慰自己蜘澜,他們只是感情好施流,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鄙信,像睡著了一般嫂沉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扮碧,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音杏糙,去河邊找鬼慎王。 笑死,一個(gè)胖子當(dāng)著我的面吹牛宏侍,可吹牛的內(nèi)容都是我干的赖淤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谅河,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼咱旱!你這毒婦竟也來了确丢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤吐限,失蹤者是張志新(化名)和其女友劉穎鲜侥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诸典,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡描函,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狐粱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舀寓。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肌蜻,靈堂內(nèi)的尸體忽然破棺而出互墓,到底是詐尸還是另有隱情,我是刑警寧澤蒋搜,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布篡撵,位于F島的核電站,受9級(jí)特大地震影響齿诞,放射性物質(zhì)發(fā)生泄漏酸休。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一祷杈、第九天 我趴在偏房一處隱蔽的房頂上張望斑司。 院中可真熱鬧,春花似錦但汞、人聲如沸宿刮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽僵缺。三九已至,卻和暖如春踩叭,著一層夾襖步出監(jiān)牢的瞬間磕潮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工容贝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留自脯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓斤富,卻偏偏與公主長得像膏潮,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子满力,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 系列文章導(dǎo)航 模塊(一) CommonJs,AMD, CMD, UMD 本文參考阮一峰 ES6入門 Module的...
    合肥黑閱讀 6,118評(píng)論 0 4
  • 上一章介紹了模塊的語法焕参,本章介紹如何在瀏覽器和 Node 之中加載 ES6 模塊轻纪,以及實(shí)際開發(fā)中經(jīng)常遇到的一些問題...
    emmet7life閱讀 2,750評(píng)論 0 1
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)叠纷。 注意:講述HT...
    kismetajun閱讀 27,477評(píng)論 1 45
  • 你從圖片上能看到什么刻帚? 一個(gè)漂亮的藍(lán)色玻璃杯碎了,液體從桌子往下流讲岁,雙手撐在桌沿上我擂。 這是從圖片上看到的,這張圖是...
    小妮emily閱讀 847評(píng)論 0 0
  • 一缓艳、選擇題(每小題2分′共50分)校摩。 1.我校的珍稀植物銀杏樹正茁壯成長,構(gòu)成銀杏樹的基本結(jié)構(gòu)和功能單位是 細(xì)胞組...
    月洋閱讀 379評(píng)論 0 0