ES6语法—var 和 let 的区别

2023-01-22 0 956

1、表达式覆盖范围

当他们在表达式内部表述表达式时,那些var表达式归属于自上而下覆盖范围。比如:

var counter;

在此例中,counter是两个自上而下表达式。这意味著该counter表达式能被任何人表达式出访。

当他们采用URL在表达式内新闻稿表达式时var,表达式的覆盖范围是局部性的。比如:

function increase() { var counter = 10; } // cannot access the counter variable here

在那个范例中,counter表达式是increase()表达式的局部性表达式。它无法在表达式以外出访。

下列实例在循环式内表明从 0 到 4 的五个位数,在循环式外表明位数 5。

for (vari =0; i < 5; i++) { console.log(“Inside the loop:”, i); } console.log(“Outside the loop:”, i);

输入:

Inside the loop: 0 Inside the loop: 1 Inside the loop: 2 Inside the loop: 3 Inside the loop: 4 Outside the loop: 5

在此实例中,i表达式是自上而下表达式。因此,能从循环式内部和for循环式之后出访它。

下列实例采用letURL而不是varURL:

for (let i = 0; i < 5; i++) { console.log(“Inside the loop:”, i); } console.log(“Outside the loop:”, i);

在这种情况下,代码在循环式中表明了从 0 到 4 的五个位数和两个引用错误:

Inside the loop: 0 Inside the loop: 1 Inside the loop: 2 Inside the loop: 3 Inside the loop: 4

错误:

Uncaught ReferenceError: iis not defined

由于此实例采用letURL,因此该表达式i是阻塞覆盖范围。这意味著该表达式i仅存在并且能在for循环式块内出访。

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

if(condition) { // inside a block } for(…) { // inside a block }

2、创建自上而下属性

自上而下var表达式作为属性添加到自上而下对象中。自上而下对象位于Web 浏览器和Node.js 上:windowglobal

var counter = 0; console.log(window.counter); // 0

但是,let表达式不会添加到自上而下对象中:

let counter = 0; console.log(window.counter); // undefined

3、重新新闻稿

varURL允许他们重新新闻稿表达式而不会出现任何人问题:

var counter = 10; var counter; console.log(counter); // 10

但是,如果他们用letURL重新新闻稿两个表达式,他们会得到两个错误:

letcounter =10; let counter; // error

4、时间死区

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

var 表达式

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

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

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

let表达式

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

let 表达式与 var 表达式具有相同的执行阶段。

时间死区从块开始,直到处理了 let 表达式新闻稿。换句话说,它是在表述之前无法出访 let 表达式的位置

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务