7-4,let与var的区别?

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

以上代码没有问题,能够理解,控制台输出如下:

http://img1.sycdn.imooc.com//climg/5df6f99c08b110a401500126.jpg


当把 var NUM = 1 改为 let NUM = 1,控制台输出如下:

http://img1.sycdn.imooc.com//climg/5df6f9ce08ae19c801400129.jpg

此时第二次输出NUM为1。这应该如何解释呢?

是不是使用var关键字定义的所有变量a和函数fun,都默认成为window的属性和方法,即window.a和windox.fun?

而let定义的属性和函数就不会默认成为window的属性和方法?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,这个属于es5与es6的语法区别,参考如下理解:

1.var 是es5声明变量的方式。在es5中,顶层对象的属性(即window的属性)等价于全局变量。也就是说,var声明的全局变量都会成为window的属性,所以通过window也能获取或者修改全局变量。

http://img1.sycdn.imooc.com//climg/5df7257a0948a16c06200210.jpg

2.let是es6声明变量的方式。在es6中,全局变量和顶层对象的属性开始分离。这就是说,用let声明的全局变量,不会成为window的属性。所以通过window无法操作NUM变量。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师