引入模块:
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属性