【Node】Node 中的 var 声明
前言
今天在练习 JavaScript 时遇到一个有意思的问题:
我有这样一段代码,最外层写着
1 | var x = 10; |
当我习惯性地使用 node
命令运行这个 js
文件时,打印出了 undefined
,而非预期的 10
。
查阅部分资料获知原因,本篇文章用于记录此事。
Window 中的 var 声明
window 中,不使用关键字声明的变量,和在最外层声明的变量都是全局变量 window 的属性。
1 | x = 10; |
Node 中的 var 声明
Node 中,没有全局变量 window
,取而代之的是 global
。关键字 this
也指向 global
。声明分两种情况:
REPL
中,同window
;1
2
3
4x = 10;
console.log(x, this.x, global.x); // 10, 10, 10
var y = 20;
console.log(y, this.y, global.y); // 20, 20, 20模块中
1
2
3
4
5
6
7// 不使用关键字声明的变量为全局变量
x = 10;
console.log(x, this.x, global.x); // 10, 10, 10
// 使用关键字声明的变量为模块私有的变量,非全局变量
var y = 20;
console.log(y, this.y, global.y); // 20, undefined, undefined
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梧木栖凰!
评论