1. let、const 和 var

2025-06-04

1. let、const 和 var

ES6 引入了一些新的语法特性。其中之一就是使用关键字constlet来声明变量。让我们来谈谈为什么它们比var更受欢迎。

范围🔭

var具有函数作用域。这意味着它可以在定义它的函数的任何地方访问。请看以下示例:

function buyHerChocolate(onDiet) {
    if (onDiet) {
        var decision = "Don't do it!";
    } else {
        var decision = "Go buy it!"
    }
    console.log(decision);
    }
buyHerChocolate(true);//"Don't do it!"
console.log(decision);//Uncaught ReferenceError: decision is not defined

正如您所见,定义的决策var变量在函数范围内可用,但是当我们尝试在函数外部记录它时,控制台会抛出错误,decision is not defined就好像它从未存在过一样。

相反,let并且const具有块{}范围。

function buyHerChocolate(onDiet) {
    if (onDiet) {
        let decision = "Don't do it!";
        console.log(decision);
    } else {
        let decision = "Go buy it!"
        console.log(decision);
    }
    console.log(decision);
    }
buyHerChocolate(true);
//"Don't do it!"
//Uncaught ReferenceError: decision is not defined
console.log(decision);//Uncaught ReferenceError: decision is not defined

惊喜!在表达式块内记录决策的值会导致预测的字符串,而在块外执行相同操作会引发错误,在函数范围外执行相同操作也会引发错误。

也发生同样的事情const


提升

用 声明的变量var会被提升到其作用域的顶部。需要注意的是,变量声明才是被托管的对象,而不是赋值操作。

console.log(x);
var x = 5;//undefined

发生了什么?!console.log()直到提升任何变量后,函数才会执行var。因此,var x; 将上升到全局作用域的顶部。然后 console.log(x) 被执行并输出 undefined,因为此时 x 没有值。x 被赋值为 5。如下所示:

var x;
console.log(x);
x = 5;

因此,如果我们console.log(x)之后再执行此操作,它会在控制台上打印 5。
这种奇怪的行为可能会在大型程序中引入错误。

let并且const不会被吊起。

console.log(x);
const x = 5;//Uncaught ReferenceError: x is not defined

声明与任务✒️

var变量可以在同一作用域内多次重新声明并重新赋值。
let变量不能重新声明,但可以在同一作用域内重新赋值。
const变量不能在同一作用域内重新声明或重新赋值。此外,必须同时声明和赋值变量。因此,我们不能这样做:

const y;//Uncaught SyntaxError: Missing initializer in const declaration

但我们必须这样做:

const y = 5;

因此,如果您的变量的值发生了变化,请使用 进行声明let,如果不是,则始终使用const

它们之间的这些差异var将会防止命名冲突。


结论:

出于上述原因,const除变量需要重新赋值的情况外,所有情况下都应使用 。在这种情况下,let请使用 。大多数文章建议开发人员避免使用var。为什么var还有人会使用 ?!

你同意我的观点吗?请留言告诉我你的看法。


进一步阅读:

📌 JavaScript 中函数作用域和块作用域的区别

📌揭秘 JavaScript 变量作用域提升

📌 JavaScript 中的提升是什么?

文章来源:https://dev.to/blueturtle/1-const-let-and--var-4cdh
PREV
我的🔥首次参加 TC39 的经历
NEXT
React.js 组件设计的 8 个最佳实践