全局变量在浏览器和Node环境下的区别
我们知道,在JavaScript中声明的全局变量,会变成Global对象的属性。这个Global对象在浏览器中为window对象,在Node环境下为global对象。
看下面这段简单的代码:
var name = 'jack'
console.log(this.name) //输出什么?
根据上面的分析,显然会打印出jack。
我们用Chrome试一下。 确实没错。
按理说,在Node环境下,应该也是相同的结果。
我们试下: 结果似乎出人意料:同样的代码,在浏览器和Node环境下,竟然出现了不同的结果。
从上面的测试代码我们可以看出:用 var 声明的变量,在浏览器环境下会成为window对象的属性,而在Node环境下不会成为global对象的属性。
那如果用 let 呢?是和 var 表现一样,还是有所区别?
用 let 声明的全局变量不会成为window对象的属性
《JavaScript高级程序设计》里写得很清楚:
例如:
var name = 'Matt'在这里插入代码片
console.log(window.name) // 'Matt'
let age = '26'
console.log(window.name) //undefined
我们也可以直接将window打印出来: 可以看到,window对象里的确只有用 var 声明的变量。
总结
- 使用 var 声明的全局变量,在浏览器环境下会成为window对象的属性,在Node环境下不会成为global对象的属性。
- 使用 let 声明的全局变量,即便在浏览器环境下不会成为window对象的属性。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!