ES6模塊化注意點


 

ES6 的模塊自動采用嚴格模式,不管你有沒有在模塊頭部加上"use strict";

嚴格模式主要有以下限制。

  • 變量必須聲明后再使用
  • 函數的參數不能有同名屬性,否則報錯
  • 不能使用with語句
  • 不能對只讀屬性賦值,否則報錯
  • 不能使用前綴 0 表示八進制數,否則報錯
  • 不能刪除不可刪除的屬性,否則報錯
  • 不能刪除變量delete prop,會報錯,只能刪除屬性delete global[prop]
  • eval不會在它的外層作用域引入變量
  • evalarguments不能被重新賦值
  • arguments不會自動反映函數參數的變化
  • 不能使用arguments.callee
  • 不能使用arguments.caller
  • 禁止this指向全局對象
  • 不能使用fn.callerfn.arguments獲取函數調用的堆棧
  • 增加了保留字(比如protectedstaticinterface

1,export命令導出必須以接口(變量)的方式,不能導出值的方式;

2,export,import命令可以出現在模塊的任何位置,只要處於模塊頂層就可以。如果處於塊級作用域內,就會報錯。因為處於條件代碼塊之中,就沒法做靜態優化了,違背了 ES6 模塊的設計初衷;

3,import命令接受一對大括號,里面指定要從其他模塊導入的變量名。大括號里面的變量名,必須與被導入模塊對外接口的名稱相同;

4,import命令輸入的變量都是只讀的,因為它的本質是輸入接口;

5,import命令具有提升效果,會提升到整個模塊的頭部,首先執行;

6,由於import是靜態執行,所以不能使用表達式和變量,這些只有在運行時才能得到結果的語法結構;

7,使用import命令的時候,用戶需要知道所要加載的變量名或函數名,否則無法加載。但是,用戶肯定希望快速上手,未必願意閱讀文檔,去了解模塊有哪些屬性和方法。為了給用戶提供方便,讓他們不用閱讀文檔就能加載模塊,就要用到export default命令,為模塊指定默認輸出;

8,正是因為export default命令其實只是輸出一個叫做default的變量,所以它后面不能跟變量聲明語句,因為export default命令的本質是將后面的值,賦給default變量,所以可以直接將一個值寫在export default之后;

9,import()函數可以用在任何地方,不僅僅是模塊,非模塊的腳本也可以使用。它是運行時執行,也就是說,什么時候運行到這一句,就會加載指定的模塊。另外,import()函數與所加載的模塊沒有靜態連接關系,這點也是與import語句不相同。import()類似於 Node 的require方法,區別主要是前者是異步加載,后者是同步加載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM