javascript - 兩個js檔案相互require
学习ing
学习ing 2017-06-28 09:28:31
0
2
839

今天遇到的筆試題,請各位老鐵解惑
a.js和b.js互相require,會不會陷入死循環?能不能導出結果?怎麼避免這問題?

学习ing
学习ing

全部回覆(2)
迷茫

這是檢視JavaScript模組的循環載入
你可以用使用es6的模組機制繞過這個問題,ES6處理"循環載入"與CommonJS有本質的不同。 ES6根本不會在乎是否發生了"循環載入",只是產生一個指向被載入模組的引用,需要開發者自己保證,真正取值的時候能夠取到值。

洪涛

如果從字面意思理解,只使用

var b = require('b')

那麼這個問題可以理解成CommonJS中的循環引用問題。 CommonJS的做法是,一旦出現某個模組被"循環載入",就只輸出已經執行的部分,還未執行的部分不會輸出。

如果從概念上理解兩個模組之間的循環引用,則也涉及es6的模組引用。

import b from 'b'

ES6根本不會關心是否發生了"循環加載",只是產生一個指向被加載模組的引用,需要開發者自己保證,真正取值的時候能夠取到值。

單純只使用CommonJs,或單純只使用esm(es6 module),都不會發生死循環。但如果兩者混用就可能發生。

推薦阮一峰的一篇博客,寫得挺完善的。
http://www.ruanyifeng.com/blo...

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板