ES6语法—var 和 let 的区别

 我来答
黑科技1718
2022-07-19 · TA获得超过5874个赞
知道小有建树答主
回答量:433
采纳率:97%
帮助的人:81.8万
展开全部

当我们在函数外部定义变量时,这些var变量属于全局范围。例如:

在本例中,counter是一个全局变量。这意味着该counter变量可以被任何函数访问。

在这个例子中,counter变量是increase()函数的局部变量。它不能在函数之外访问。

以下示例在循环内显示从 0 到 4 的四个数字,在循环外显示数字 5。

输出:

在此示例中,i变量是全局变量。因此,可以从循环内部和for循环之后访问它。

以下示例使用let关键字而不是var关键字:

在这种情况下,代码在循环中显示了从 0 到 4 的四个数字和一个引用错误:

错误:

由于此示例使用let关键字,因此该变量i是阻塞范围。这意味着该变量i仅存在并且可以在for循环块内访问。

在 JavaScript 中,一个块由一对花括号分隔,{}就像在if...elseandfor语句中一样:

全局var变量作为属性添加到全局对象中。全局对象位于Web 浏览器和Node.js 上:windowglobal

但是,let变量不会添加到全局对象中:

let 变量有时间死区,而 var 变量没有。为了理解时间死区,让我们检查一下 var 和 let 变量的生命周期,它们有两个步骤:创建和执行。

var 变量

在创建阶段,JavaScript 引擎将存储空间分配给 var 变量,并立即将它们初始化为 undefined。

在执行阶段,JavaScript 引擎将分配指定的值分配给 var 变量(如果有的话)。否则, var 变量保持未定义。

有关详细信息,请参阅执行上下文。

let变量

在创建阶段,JavaScript 引擎为 let 变量分配存储空间,但不初始化变量。引用未初始化的变量将导致 ReferenceError。

let 变量与 var 变量具有相同的执行阶段。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式