一、严格模式
1、严格模式的限制
with
语句delete prop
,会报错,只能删除属性delete global[prop]
eval
不会在它的外层作用域引入变量eval
和arguments
不能被重新赋值arguments
不会自动反映函数参数的变化arguments.callee
arguments.caller
this
指向全局对象fn.caller
和fn.arguments
获取函数调用的堆栈protected
、static
和interface
)二、export和import命令
三、模块的整体加载
*
)指定一个对象,所有输出值都加载在这个对象上面import * as objName from ‘otehrModule‘;
四、export default命令
import
命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载 //除整体加载使用*import
命令可以为该匿名函数指定任意名字import
命令后面,不使用大括号。// 输出 export default function crc32() { // ... } // 输入 import crc32 from ‘crc32‘; // 输出 export function crc32() { // ... }; // 输入 import {crc32} from ‘crc32‘;
五、模块的继承
六、ES6模块加载的实质
七、循环加载
a
脚本的执行依赖b
脚本,而b
脚本的执行又依赖a
脚本八、CommonJS模块的加载原理
require
命令第一次加载该脚本,就会执行整个脚本,然后在内存生成一个对象exports
属性上面取值。即使再次执行require
命令,也不会再次执行该模块,而是到缓存之中取值。也就是说,CommonJS模块无论加载多少次,都只会在第一次加载时运行一次,以后再加载,就返回第一次运行的结果,除非手动清除系统缓存。九、跨模块常量
十、ES6模块的转码
原文:http://www.cnblogs.com/realsoul/p/5560435.html