7-4,let与var的区别?
程序如下:
var NUM = 1; // 全局变量 function fun() { this.NUM = 10; console.log(this); } console.log(NUM); // 1 fun(); // this指向window,window.NUM即前面用var定义的全局变量 console.log(NUM); // 10
以上代码没有问题,能够理解,控制台输出如下:
当把 var NUM = 1 改为 let NUM = 1,控制台输出如下:
此时第二次输出NUM为1。这应该如何解释呢?
是不是使用var关键字定义的所有变量a和函数fun,都默认成为window的属性和方法,即window.a和windox.fun?
而let定义的属性和函数就不会默认成为window的属性和方法?
源自:JS面向对象
7-4 关键词(下)
15
收起
正在回答
1回答
同学你好,这个属于es5与es6的语法区别,参考如下理解:
1.var 是es5声明变量的方式。在es5中,顶层对象的属性(即window的属性)等价于全局变量。也就是说,var声明的全局变量都会成为window的属性,所以通过window也能获取或者修改全局变量。
2.let是es6声明变量的方式。在es6中,全局变量和顶层对象的属性开始分离。这就是说,用let声明的全局变量,不会成为window的属性。所以通过window无法操作NUM变量。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星