1.什么是作用域
作用域:规定了一个变量和函数可使用的范围,作用域分为两种:全局作用域、局部作用域(函数作用域)
2.NodeJS作用域
NodeJs中一个文件就是一个模块,模块中使用var定义的变量为局部作用域,只能在该模块中使用,因为模块在使用时会把NodeJs编译为一个函数,那么使用var的定义的变量,理所当然的只能在这个模块(函数)中使用。
比如:某模块我们编写了以下代码 b.js文件
var b = 10;
console.log(arguments.callee.toString());
a.js模块引入b.js
var b = require("./b"); // 导入b模块中exports对象给变量b.
console.log("a模块中代码");
NodeJs会在执行之前,编译这个模块为:node a.js
function (exports, require, module, __filename, __dirname) {
var a = 10;// a为局部变量
console.log(arguments.callee.toString()); //可以看见最终b.js内容
}
3. NodeJS全局作用域和全局对象
NodeJs定义一个变量,如果不是使用var,而直接给变量赋值,那么就是一个全局变量,一个全局变量可以被其他模块所使用。
username = “123123”;
NodeJs中的全局对象为global,所以通过给这个对象上面添加属性,也是全局变量。
global.address = “成都源码时代”;
注意:尽量少使用全局变量,避免变量冲突。