JavaScript var、let和const关键字的区别

JavaScript var、let和const关键字的区别

在JavaScript中,用户可以使用三个关键字来声明变量,分别是var、let和const。本文将介绍var、let和const关键字之间的区别。我们将讨论每个关键字的作用域和其他必要的概念。

JavaScript var关键字: var是JavaScript中最早的声明变量的关键字。

作用域: 全局作用域或函数作用域。var关键字的作用域是全局作用域或函数作用域。这意味着在函数之外定义的变量可以在全局范围内访问,而在特定函数内定义的变量只能在函数内部访问。

示例1: 变量’a’被全局声明。因此,变量’a’的作用域是全局的,可以在程序的任何地方访问。控制台输出如下所示。

Javascript

var a = 10
function f() {
    console.log(a)
}
f();
console.log(a);

输出:

10
10

示例2: 变量‘a’在函数内部被声明。如果用户尝试在函数外部访问它,它将显示错误。用户可以使用 var 关键字声明相同名称的2个变量。同时,用户可以将值重新赋给 var 变量。输出结果在控制台中显示。

Javascript

function f() {
 
    // It can be accessible any
    // where within this function
    var a = 10;
    console.log(a)
}
f();
 
// A cannot be accessible
// outside of function
console.log(a);

输出:

10
ReferenceError: a is not defined

示例3: 用户 可以使用 var 重新声明变量,用户可以更新 var 变量。输出显示在控制台上。

JavaScript

var a = 10
 
// User can re-declare
// variable using var
var a = 8
 
// User can update var variable
a = 7

输出:

7

示例4: 如果用户在声明之前使用var变量,它将以未定义的值进行初始化。输出结果显示在控制台中。

Javascript

console.log(a);
var a = 10;

输出:

undefined

JavaScript let关键字: let关键字是var关键字的一种改进版本。

作用域:块级作用域:let变量的作用域仅限于块级作用域。它无法在特定块({block})之外访问。让我们看一个示例。

示例1: 控制台中显示输出。

Javascript

let a = 10;
function f() {
    let b = 9
    console.log(b);
    console.log(a);
}
f();

输出:

9
10

示例2: 代码返回错误,因为我们在函数块之外访问了let变量。输出显示在控制台中。

JavaScript

let a = 10;
function f() {
    if (true) {
        let b = 9
 
        // It prints 9
        console.log(b);
    }
 
    // It gives error as it
    // defined in if block
    console.log(b);
}
f()
 
// It prints 10
console.log(a)

输出:

9
ReferenceError: b is not defined

示例3: 用户无法重新声明使用 let 关键字定义的变量,但可以更新它。

JavaScript

let a = 10
 
// It is not allowed
let a = 10
 
// It is allowed
a = 10

输出:

Uncaught SyntaxError: Identifier 'a' has already been declared

示例4: 用户可以使用let关键字在不同的代码块中声明同名的变量。

Javascript

let a = 10
if (true) {
    let a = 9
    console.log(a) // It prints 9
}
console.log(a) // It prints 10

输出:

9 
10

示例5: 如果用户在声明之前使用 let 变量,它不会像 var 变量一样初始化为 undefined 并返回错误。

JavaScript

console.log(a);
let a = 10;

将下面的英文翻译成中文,不解释,保留HTML格式:

输出:

Uncaught ReferenceError: Cannot access 'a' before initialization

const JavaScript中的关键字: const 关键字拥有和 let 关键字相同的特性,用户无法更新它。

作用域: 块级作用域: 当用户声明一个 const 变量时,他们需要初始化它,否则会报错。一旦声明,用户无法更新 const 变量。

示例1: 我们尝试改变 const 变量的值,以便返回错误。输出结果会在控制台显示。

JavaScript

const a = 10;
function f() {
    a = 9
    console.log(a)
}
f();

输出:

TypeError:Assignment to constant variable.

示例2: 用户不能修改const对象的属性,但是可以修改const对象的属性值。

JavaScript

const a = {
    prop1: 10,
    prop2: 9
}
 
// It is allowed
a.prop1 = 3
 
// It is not allowed
a = {
    b: 10,
    prop2: 9
}

输出结果:

Uncaught SyntaxError:Unexpected identifier

varletconst 之间的区别:

var let const
var 变量的作用域是函数作用域。 let 变量的作用域是块级作用域。 const 变量的作用域是块级作用域。
var 变量可以更新和重新声明。 let 变量可以更新,但不能重新声明。 const 变量既不能更新也不能重新声明。
var 变量可以在声明时不初始化。 let 变量可以在声明时不初始化。 const 变量在声明时必须初始化。
var 变量可以在未初始化情况下访问,其默认值为“undefined”。 let 变量在未初始化情况下无法访问,否则会报错“referenceError”。 const 变量在未初始化情况下无法访问,因为它在声明时必须初始化。
var 变量会被提升,但初始化值为“default”。 let 变量会被提升,但不会被初始化(这是我们在声明/初始化 let 变量之前访问它时出错的原因)。 const 变量会被提升,但不会被初始化(这是我们在声明/初始化 const 变量之前访问它时出错的原因)。

注意: 有时候,当用户在特定的代码块中改变变量 var 的值时,会遇到问题。因此,用户应该在JavaScript中使用 let 和 const 关键字来声明变量。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程