引入模块:
1. 假设有02.module.js这个模块:

2. 在03.moudle.js引入02.moudle.js这个模块并执行:(文件后面的.js可以省略)


执行03.moudle.js执行成功:

如果03.moudle.js需要使用02.moudle.js里的变量,不能直接使用,但可以:

在03.moudle.js里打印02.moudle.js里的变量x:

???奇怪

???奇怪
原因是:

每个模块对于另一个模块来说都是封闭的,那需要暴露如像x和y这种要怎么办?

执行03.moudle.js执行成功:


执行03.moudle.js执行成功:

math模块:

在helloWorld种执行math模块:

执行成功:

模块标识:
![]()


全局变量:
不通过模块引入来判断是否在模块中是全局变量:

说明a不是全局变量!

需要证明a变量是在函数里运行的,不是在函数外运行的

arguagements:伪数组对象(类数组),封装函数实参【全局里没有实参】
如果运行04.moudle.js发现里面有arguments就说明a运行在函数里
运行04.moudle.js发现里面有arguments:

说明a运行在函数里
想要看到运行a的函数:

直接调用会把当前函数的对象打印出来:

但是加上拼串,前面会调用tostring(),把函数结构打印出来:



那么exports和require这些方法的使用由来就有根可循了:
为什么在A模块下可以使用require和exports这些方法,因为这些本身就是B模块下函数的参数,将B模块引入A模块下,当然可以使用B的参数了

因为modle是当前模块本身,当前function()函数本身,所以可以使用exports属性


浙公网安备 33010602011771号