let和var变量的思考

刚学JavaScript,纠结全局变量用var 还是 let。

这篇文章[来源于知乎]表示 在定义全局变量时,var 和 let 的作用相同。

那么现在基本遵守ES6规范的前提下,函数变量还是for循环中的变量,我都用的是let。

MDN对let的描述

let允许你声明一个作用域被限制在 级中的变量、语句或者表达式。与 var 关键字不同的是, var声明的变量只能是全局或者整个函数块的。 var 和 let 的不同之处在于后者是在编译时才初始化(见下面)。

就像const 一样,let不会在全局声明时(在最顶部的范围)创建window 对象的属性。

这里可以了解为什么用let。

let不会在全局声明时(在最顶部的范围)创建window 对象的属性? 啥意思?

  解释:

在程序和方法的最顶端,let不像 var 一样,let不会在全局对象里新建一个属性。 位于函数或代码顶部的var声明会给全局对象新增属性, 而let不会。例如:

var x = 'global';
let y = 'global';
console.log(this.x); // "global"
console.log(window.x); // "global"
console.log(this.y); // undefined
console.log(window.y); // undefined

转自

 

目前我还没怎么用到window对象的属性,所以let的这个限制暂时不影响我对它的使用。

所以,目前我决定都用let定义变量,可以让我写代码时避免一些错误,清晰我的思路。

 

posted @ 2020-10-07 22:31  Olebaba  阅读(138)  评论(0编辑  收藏  举报