CommonJS
1.對于基本數(shù)據(jù)類型,屬于復(fù)制(淺拷貝)瘟斜。即會(huì)被模塊緩存。同時(shí)痪寻,在另一個(gè)模塊可以對該模塊輸出的變量重新賦值螺句。
2.?當(dāng)使用require命令加載某個(gè)模塊時(shí),就會(huì)運(yùn)行整個(gè)模塊的代碼槽华。
3.當(dāng)使用require命令加載同一個(gè)模塊時(shí)壹蔓,不會(huì)再執(zhí)行該模塊,而是取到緩存之中的值猫态。也就是說佣蓉,CommonJS模塊無論加載多少次,都只會(huì)在第一次加載時(shí)運(yùn)行一次亲雪,以后再加載勇凭,就返回第一次運(yùn)行的結(jié)果,除非手動(dòng)清除系統(tǒng)緩存义辕。
4.循環(huán)加載時(shí)虾标,屬于加載時(shí)執(zhí)行。即腳本代碼在require的時(shí)候灌砖,就會(huì)全部執(zhí)行璧函。一旦出現(xiàn)某個(gè)模塊被"循環(huán)加載",就只輸出已經(jīng)執(zhí)行的部分基显,還未執(zhí)行的部分不會(huì)輸出蘸吓。
ES6模塊
es6模塊中的值屬于【動(dòng)態(tài)只讀引用】。只說明一下復(fù)雜數(shù)據(jù)類型撩幽。
對于只讀來說库继,即不允許修改引入變量的值箩艺,import的變量是只讀的,不論是基本數(shù)據(jù)類型還是復(fù)雜數(shù)據(jù)類型宪萄。當(dāng)模塊遇到import命令時(shí)艺谆,就會(huì)生成一個(gè)只讀引用。等到腳本真正執(zhí)行時(shí)拜英,再根據(jù)這個(gè)只讀引用静汤,到被加載的那個(gè)模塊里面去取值。
對于動(dòng)態(tài)來說聊记,原始值發(fā)生變化撒妈,import加載的值也會(huì)發(fā)生變化。不論是基本數(shù)據(jù)類型還是復(fù)雜數(shù)據(jù)類型排监。