> For the complete documentation index, see [llms.txt](https://note.niefee.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://note.niefee.com/summary/3/2016-nian-3-yue-6-ri.md).

# 2016年3月6日

## nodejs

在一个模块中通过var定义的变量，其作用域范围是当前模块，外部不能够直接的访问 如果我们想一个模块能够访问另外一个模块中定义的变量，可以：

1. 把变量作为global对象的一个属性，但是这样的做法是推荐
2. 使用模块对象 module

**module** : 保存提供和当前模块有关的一些信息; 在这个**module**对象，有一个子对象：**exports** 对象 我们可以通过这个对象把一个模块中的局部变量对象进行提供访问

```javascript
<!-- 1.js -->
module.exports.a = a;


<!-- 2.js -->
var m5 = require('./5'); //这个方法的返回值，其实就被加载模块中的module.exports

console.log(module);

//{ a: 100 }
//
//module.exports = [1,2,3];   //exports 和 module.exports 的指向关系已经断开了,module.exports 给改写了，不是在这个对象上添加属性那样了
//。
```

**\_\_filename** : 返回当前模块文件解析后的绝对路径，该属性其实并非全局的，而是模块作用域下的 **\_\_dirname** : 返回当前模块文件所在目录解析后的绝对路径，该属性也不是全局的，而是模块作用域下的。
