在JavaScript 中顶层对象的属性和全局变量的区别

在JavaScript中,顶层对象在浏览器环境中是 window 对象,顶层对象 window 的属性代表全局变量。

如果在顶层代码中声明一个变量,它将成为 window 的属性,可以通过 window 对象来读取和修改它。

举个🌰:

1
var foo = 'hello world';

那么现在 foo 是作为 window 对象的一个属性存在的。这意味着我们可以使用以下两种方法来读取和修改它:

1
2
3
4
window.foo // 'hello world'
foo // 'hello world'
window.foo = 'Hello, window!';
foo // 'Hello, window!'

在Node.js 中顶层对象的属性和全局变量的区别

在Node.js环境中顶层对象是 global 对象,在顶层代码中声明的变量不会自动成为 global 的属性。要把变量添加到全局作用域中,必须使用 global 关键字。例如,我们可以这样

1
global.foo = 'hello world';

⚠️:在Node.js环境中,为了避免意外地污染全局命名空间,实际上不推荐使用全局变量,而是尽可能使用模块导出。


总结:大功告成✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️