首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

JavaScript编程基础 – 关键字Let, Const和Var的区别

  • 25-03-02 15:01
  • 2772
  • 10889
blog.csdn.net

JavaScript编程基础 – 关键字Let, Const和Var的区别

JavaScipt Programming Essentials -

The Differences Between The Keywords Let, Const and Var in JavaScript

传统的JavaScript编程语言,无一例外地可以利用var关键字来声明变量;但是,近些年来,尤其是从ECMAScript 2015(即ES6版本)开始,人们可以使用 var、let 和 const 这 3 个关键字声明变量。
ES6带来的额外关键字,就是let和const。

在本文中,将简要介绍 var、let 和 const 关键字之间的区别。也将简要讨论每个关键字的范围和相关概念。

JavaScript var 关键字:var 是 JavaScript 中声明变量的最古老的关键字。
因此,最初学习JavaScript编程的时候,通用变量都用Var来声明,例如声明一个name变量,
var name;

后来,为什么会出现let和const呢?让我们首先来看以下作用域的应用

作用域,实际上是变量起作用的范围;它分为全局作用域或函数作用域。

1. var关键字

var 关键字的作用域是全局作用域或函数作用域。这意味着既可以在函数外部定义的变量进行全局访问,又可以在函数内部访问在特定函数内部定义的变量。

示例代码1: 变量“a”是全局(globally)声明的。因此,变量“a”的作用域是全局的,并且可以在程序中的任何位置访问它。Console.log()语句得到控制台输出。

var a = 10
function myFunction() {
    console.log(a)
}
myFunction();
console.log(a);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行结果如下图所示:
在这里插入图片描述

示例代码 2: 变量“a”在函数内部声明。如果用户尝试在函数外部访问它,系统会报错。
用户可以使用 var 关键字声明 2 个同名变量。此外,用户可以将值重新分配到 var 变量中。控制台显示输出结果。

function theFunction() { 
    var a = 10;
    console.log(a)
}
theFunction();
 
console.log(a);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

执行结果如下图所示:
在这里插入图片描述
函数体外的console.log(a)语句报错为ReferenceError: a is not defined( 引用错误:未定义的a)

示例代码3:用户可以使用 var 重新声明变量,并且可以更新 var 变量。同样在控制台输出结果。

var a = 11;
  • 1

将a在函数体外声明并初始化成不同的值,输出结果如下图:

在这里插入图片描述
示例代码 4:还有一种可能,假如用户在声明之前就使用 var 变量,则该变量将使用未定义的值(undefined)进行初始化,并在控制台显示输出结果。
例如:

console.log(a);
var a = 12;
  • 1
  • 2

2. let关键字

JavaScript let 关键字是 var 关键字的改进版本。
作用域为块作用域:let 变量的作用域仅为块作用域。它不能在特定块 ({block}) 之外访问。让我们看看下面的例子。

示例代码 1:控制台显示输出结果。

let a = 10;
function theFunc() {
    let b = 9;
    console.log(b);
    console.log(a);
}
theFunc();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

执行结果如下图所示:

在这里插入图片描述
示例 代码2:以下代码会返回错误,因为我们正在访问功能块外部的 let 变量。控制台显示输出结果。

let a = 10;
function thefunc() {
    if (true) {
        let b = 9
 		console.log(b);
}
Console.log(b);
}
thefunc();
console.log(a);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

执行结果如下图所示:
在这里插入图片描述

示例代码 3:用户不能够重新声明使用 let 关键字定义的变量,但可以更新它的值。
1) 允许的操作

let a = 10;
a = 15;
  • 1
  • 2

2) 禁止的操作

let a = 10;
let a = 15;
  • 1
  • 2

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

let a = 10
if (true) {
let a = 9
console.log(a)  
}
console.log(a) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行结果如下图所示:
在这里插入图片描述
示例代码 5:如果用户在声明之前就使用 let 变量,那么,它不会像 var 变量那样使用 undefined 进行初始化,会返回错误。
在这里插入图片描述

3. Const关键字

JavaScript 中的 const 关键字,具有与 let 关键字相同的所有属性,但用户无法修改更新它;换句话说,它相当于常量。

作用域:块作用域。当用户声明一个 const 变量时,需要初始化它,否则会返回错误。一旦声明了 const 变量,用户就无法对其进行更新。

示例代码 1:我们正在更改 const 变量的值,使其返回错误。控制台显示输出结果。

const a = 10;
function thefunc() {
    a = 9;
    console.log(a);
}
thefunc();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行结果如下图所示:
在这里插入图片描述
上图中显示TypeError(类型错误:为常量赋值)。

示例代码 2:用户无法更改 const 对象的属性,但可以更改 const 对象的属性值。

const a = {
    prop1: 10,
    prop2: 9
}
a.prop1 = 3;
 
a = {
    b: 10,
    prop2: 9
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

运行结果如下:
在这里插入图片描述
出现TypeError:Assignment to constant variable.(类型错误:为常量赋值)
a作为const类型对象,被重新赋值时报错。

根据以上示例代码,将三种关键字的区别小结如下:
1) var变量的作用域,是函数的作用域;它在作用域内能被更新和重新声明;未初始化时为undefined类型,此时也能被访问;
2) let变量的作用域是块作用域;它能被更新但不能够被在作用域里重复声明;可以无初始化声明;未初始化时,它不能被访问,否则报错”reference error”;
3) const变量的作用域是块作用域;在块内,它不能被更新或重复声明;未初始化它不能被声明;它不能被访问(未初始化);未初始化时它不能被声明。

结束语

有时,用户在使用 var 变量时会遇到问题,因为他们在特定块中更改了它的值。因此,用户应该使用 let 和 const 关键字在 JavaScript 中声明变量;这样也符合及遵守ES6的标准。

喜欢就点赞哈。?
技术好文陆续推出,敬请关注。

相关阅读:
1.JavaScript编程基础:变量
2. JavaScript编程基础:输出

注:本文转载自blog.csdn.net的Jackson@ML的文章"https://jackson.blog.csdn.net/article/details/134346963"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top