碎片时间学编程「293]:JavaScript 中的 var、let 和 const 有什么区别?

JavaScript 具有三种变量声明语句:var,let和const. 后两者是在 ES6 中添加的,var 变量从以前的版本开始就存在。首先要注意的事情之一是const定义常量(即不会重新分配的值),而var、let 定义变量。然而,var、let行为与两者不同,并且const以其他各种方式。
范围
声明的变量var是函数作用域的,与用声明的变量let或const块作用域的变量相反。
const scopeExample = () => { var a = 'var'; let b = 'let'; console.log(a, b); // 'var', 'let' { var c = 'var'; let d = 'let'; console.log(c, d); // 'var', 'let' } console.log(c); // 'var' console.log(d); // Throws a ReferenceError};
吊装
当用 var 声明的变量被提升到封闭范围时,用let或 const 声明的变量在其定义被评估之前不会被初始化。
const hoistingExample = () => { console.log(a); // undefined var a = 'var'; console.log(a); // 'var' console.log(b); // ReferenceError let b = 'let'; console.log(b); // 'let'};
全局对象属性
在顶层,用 let 声明的变量与用 const 或var声明的变量不同,它在全局对象上创建一个属性。
var a = 'var';let b = 'let';console.log(window.a); // 'var'console.log(window.b); // undefined
重新申报
在严格模式下,用 with 声明的变量var可以在同一范围内重新声明,而用let或声明的变量则不允许这样做const。
'use strict';var a = 'var1';var a = 'var2';let b = 'let1';let b = 'let2'; // SyntaxError
更多内容请访问我的网站:https://www.icoderoad.com