nodejs全局变量
node内置全局变量
在nodeJs中,全局变量有两个:
1、"__filename":表示当前正在执行的脚本的文件名,可输出文件所在位置的绝对路径。
2、"__dirname":表示当前执行脚本所在的目录。
__filename
__filename 表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径,且和命令行参数所指定的文件名不一定相同。 如果在模块中,返回的值是模块文件的路径。
实例:创建文件 main.js ,代码如下所示:
// 输出全局变量
__filename 的值console.log( __filename );执行 main.js 文件,代码如下所示:
$ node main.js
/web/com/runoob/nodejs/main.js__dirname
__dirname 表示当前执行脚本所在的目录。
实例:创建文件 main.js ,代码如下所示:
// 输出全局变量
__dirname 的值console.log( __dirname );执行 main.js 文件,代码如下所示:
$ node main.js
/web/com/runoob/nodejsnode自定义全局变量
在 Node.js 中有两种创建全局变量的方法:
(1)使用 global 对象,
(2)使用 module.export 。
较小的应用使用 global 对象,大型应用使用 module.export。
方法一:使用global 对象
Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。在 Node.js 我们可以直接访问到 global 的属性,而不需要在应用中包含它。
定义全局变量的方法:
global.变量名="变量值";访问全局变量的方法:
global.变量名如果你熟悉浏览器中的 JavaScript 环境,global 对象和 Window 对象相似。接下来做一些测试:
> global.name
undefined
> global.name = 'fly63 前端网'
'fly63 前端网'
> global.name
'fly63 前端网'
> GLOBAL.name
'fly63 前端网'
> (node:14432) [DEP0016] DeprecationWarning: 'GLOBAL' is deprecated, use 'global'
delete global.name
true
> global.name
undefined
> GLOBAL.name
undefined
> name = "fly63"
'fly63'
> GLOBAL.name
'fly63'
> var age = 23
undefined
> GLOBAL.age
23①可以看出,GLOBAL 其实是 global 的一个别名。name == global.name == GLOBAL.name
②无论是使用 var 声明的变量,还是未使用 var 声明的变量都添加到了 global 对象上。
③然而,有一点不同之处在于,在你创建的模块中,使用 var 关键字声明的变量只属于这个模块,属于局部变量。那些未使用 var 关键字声明的变量则附加到 global 对象上。
在模块中全局声明的变量可以通过它的变量名直接被任何其他的模块引用,而不用通过 global 对象的引用;但是如果在模块内定义了和全局变量同名的局部变量,访问全局变量时就要加global了。
如下:
var city = 'nanjing';
console.log(global.city); // 'beijing'
console.log(city); // 'nanjing'方法二:使用module.exports
还有一个方法 —— module.exports,让我用一个例子来证明:
exports.company = 'Google';
var m = require('./mod');var company = require('./main').company;
console.log(company);现在来看看它怎么运作的:
$ node main.js
Google注意:引用一个已经引用了另外一个模块的模块,只会创建一个包含前一个模块的引用,这并不意味着会严重增加内存的使用。同时,因为不存在真正的重复包含,模块中所有的初始化函数都不会重复执行一次。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!