一、什么是模块作用域
和函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块
作用域
二、模块作用域的好处
防止了全局变量污染的问题
三、代码演示
const username = 'Echo'
function sayHello() {
console.log('大家好,我是' + username)
}
const custom = require('./11.模块作用域')
console.log(custom)
四、向外共享模块作用域中的成员
module 对象介绍:
在每个 .js 自定义模块中都有一个 module 对象,它里面存储了和当前模块有关的信息
在自定义模块中,可以使用 module.exports 对象,将模块内的成员共享出去,供外界使用。
console.log(module)
// 在一个自定义模块中,默认情况下, module.exports = {}
const age = 20
// 向 module.exports 对象上挂载 username 属性
module.exports.username = 'zs'
// 向 module.exports 对象上挂载 sayHello 方法
module.exports.sayHello = function() {
console.log('Hello!')
}
module.exports.age = age
// 让 module.exports 指向一个全新的对象
module.exports = {
nickname: 'Echo',
sayHi() {
console.log('Hi!')
}
}
// 在外界使用 require 导入一个自定义模块的时候,得到的成员,
// 就是 那个模块中,通过 module.exports 指向的那个对象
const m = require('./13.module.exports 对象使用')
console.log(m)