let和var,(变量声明和赋值)_

2023年12月1日18:31:24277

let和var,(变量声明和赋值)_

福利:2024年毕业生及准备创业的人群,可以免费获取商道资源网部分创业资源(网址https://wz.yingyanwk.com)。

客服连接shen1318387

JavaScript中有两个关键字用于声明变量,分别是let和var。它们的最主要区别在于作用域的问题。使用var声明的变量属于函数作用域,而使用let声明的变量属于块作用域。这意味着在使用let声明的变量中,其作用域限定在声明它的块中,而使用var声明的变量作用域可以是整个函数。

  • 变量作用域不同

var 用于声明变量,其作用域为所在的函数内,而 let 用于声明变量,其作用域为所在的块内。

var 声明变量为例:

function test() {
    var x=1;
    if (true) {
        var x=2;
        console.log(x);   // 输出 2
    }
    console.log(x);       // 输出 2
}

在这个示例中,使用var关键字声明的变量x在函数内的任何位置都是可见的。在if语句块中定义的变量x和函数内部定义的变量x等价,所以控制台中输出了2。

再来看一下 let 的例子:

让我们来看一个 let 的例子。假设我们有一个变量 x,我们可以使用 let 来声明它,并赋予一个初始值,比如:

```javascript
let x=10;
```

在这个例子中,我们使用 let 关键字来声明变量 x,并将其初始化为 10。这意味着我们可以在后续代码中使用变量 x,并且它的值将保持为 10,直到我们显式地修改它。

function test() {
    let x=1;
    if (true) {
        let x=2;
        console.log(x);   // 输出 2
    }
    console.log(x);       // 输出 1
}

因为使用了 let 声明变量, if 语句块内部和函数内部的变量 x 是不同的,分别具有各自的作用域,因此在控制台上分别输出了 2 和 1。

  • 变量声明提升不同

JavaScript 中的变量提升是指在代码执行阶段,变量和函数的声明会被提升到当前作用域的顶部,这意味着可以在声明之前使用它们。这种特性使得在代码中可以先使用后声明变量,但实际上在执行时,变量的声明仍然是在作用域的顶部。

在 JavaScript 中,使用 var 声明的变量会被提升到所在作用域的顶部。这意味着在函数内部,无论变量声明在函数的哪个位置,都可以在整个函数范围内使用。

let 声明的变量不会像 var 声明的变量那样被提升至当前作用域的顶部,在声明之前使用 let 声明的变量会导致 ReferenceError 错误。

例如:

console.log(testVar);    // 输出 undefined
var testVar=1;

console.log(testLet);    // Uncaught ReferenceError: testLet is not defined
let testLet=1;

变量 testVar 会被提升,因此在其声明之前使用会得到 undefined。相较之下,使用 let 声明的变量 testLet 在声明之前使用会导致 ReferenceError 错误。

  • 同一作用域内同名变量处理

在 JavaScript 中,在同一作用域内使用 var 或 let 声明同名变量会产生不同的结果。具体来说,使用 var 声明的变量会成为全局作用域或函数作用域的变量,而使用 let 声明的变量将成为块级作用域的变量。这意味着在同一块级作用域内使用 let 声明同名变量会导致"Identifier 'variableName' has already been declared"的异常,而使用 var 则不会。

声明同名变量时,使用关键字 var 会覆盖之前声明的同名变量,而使用关键字 let 则会被视为语法错误,因为在同一作用域内不能使用 let 重复声明同名变量。因此,var 允许变量被重复声明和赋值,而 let 不允许同名变量被重复声明。

例如:

var x="Hello";
var x="World";   // 不会报错
console.log(x);    // 输出 "World"

let y="Hello";
let y="World";   // 会报错:Uncaught SyntaxError: Identifier 'y' has already been declared
console.log(y);

因为变量 x 是使用 var 声明的,所以重复声明会被视为合法的。如果使用 let 声明变量 y,在同一作用域内再次声明同名变量会被视为错误。因此,这段代码能够正常执行。

let 关键字用于声明块级作用域变量,而 var 关键字用于声明函数作用域变量。使用 let 声明的变量在其声明的块内可见,而使用 var 声明的变量则在包含该声明的函数内可见。此外,使用 var 声明的变量会存在声明提升,而使用 let 声明的变量则不会。在同一作用域内,如果使用 var 声明了同名变量,则会发生变量覆盖,而使用 let 声明则会报错。

网上报名
  • 文中图片素材来源网络,如有侵权请联系354383606@qq.com删除
  • 转载请务必保留本文链接:https://zxbmw.cn/?p=40173