Let、Const 和 Var 概述:主要差异解释

2024-08-09 0 958

Let、Const 和 Var 概述:主要差异解释

曾经有一段时间,我使用并理解了 JavascrIPt 中 let、const 和 var 的实际用法,但用语言解释它是具有挑战性的。如果您发现自己处于类似的困境,那么需要关注的关键点是范围、提升、重新初始化和重新分配方面的差异。

范围:

  • 如果在任何函数外部声明,则 var 是函数作用域或全局作用域。

var 示例(函数和全局作用域)

1

2

3

4

5

6

7

8

9

10

11

12

function varexample() {

    if (true) {

        var x = 10; // x is function-scoped

    }

    console.log(x); // outputs: 10

}

varexample();

if (true) {

    var y = 20; // y is globally scoped because it's outside a function

}

console.log(y); // outputs: 20

  • let 和 const 是块作用域的,这意味着它们只能在声明它们的块(由 {} 分隔)内访问。

let 示例(块作用域)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

function letexample() {

    if (true) {

        let x = 10; // x is block-scoped

        console.log(x); // outputs: 10

    }

    console.log(x); // referenceerror: x is not defined

}

letexample();

if (true) {

    let y = 20; // y is block-scoped

    console.log(y); // outputs: 20

}

console.log(y); // referenceerror: y is not defined

const 示例(块作用域)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

function constexample() {

    if (true) {

        const x = 10; // x is block-scoped

        console.log(x); // outputs: 10

    }

    console.log(x); // referenceerror: x is not defined

}

constexample();

if (true) {

    const y = 20; // y is block-scoped

    console.log(y); // outputs: 20

}

console.log(y); // referenceerror: y is not defined

吊装

提升就像在开始任务之前设置一个工作空间。想象一下你在厨房里,准备做饭。在开始烹饪之前,请将所有食材和工具放在柜台上,以便触手可及。

在编程中,当您编写代码时,javascript 引擎会在实际运行代码之前检查您的代码,并将所有变量和函数设置在其作用域的顶部。这意味着您可以在代码中声明函数和变量之前使用它们。

  • 所有三个(var、let 和 const)确实都被提升了。不过不同之处在于它们在吊装过程中是如何初始化的。

  • var 被提升并初始化为 undefined。

1

2

console.log(myvar); // outputs: undefined

var myvar = 10;

  • let 和 const 被提升但未初始化。这意味着从块开始到遇到声明,它们处于“临时死区”。

1

2

3

console.log(mylet);

// referenceerror: cannot access 'mylet' before initialization

let mylet = 10;

1

2

3

console.log(myconst);

// referenceerror: cannot access 'myconst' before initialization

const myconst = 20;

重新分配和重新初始化:

  • var 可以重新初始化(再次声明)和重新分配(分配新值)。 ### 使用 var 的示例

1

2

3

4

5

6

var x = 10;

x = 20; // reassignment

console.log(x); // outputs: 20

var x = 30; // reinitialization

console.log(x); // outputs: 30

  • let 不能在同一范围内重新初始化,但可以重新分配。

1

2

3

4

5

let y = 10;

y = 20; // reassignment

console.log(y); // outputs: 20

let y = 30; // syntaxerror: identifier 'y' has already been declared

  • const 不能重新赋值;它必须在声明时初始化。但是,如果 const 是对象或数组,则可以修改对象或数组的内容(属性或元素)。 ### 使用 const 的示例

1

2

3

4

const z = 10;

z = 20; // typeerror: assignment to constant variable.

const z = 30; // syntaxerror: identifier 'z' has already been declared

const 对象的示例

1

2

3

4

5

const obj = { a: 1 };

obj.a = 2; // allowed, modifies the property

console.log(obj.a); // outputs: 2

obj = { a: 3 }; // typeerror: assignment to constant variable.

const 数组的示例

1

2

3

4

5

const arr = [1, 2, 3];

arr[0] = 4; // Allowed, modifies the element

console.log(arr); // Outputs: [4, 2, 3]

arr = [5, 6, 7]; // TypeError: Assignment to constant variable.

登录后复制

 

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

免责声明
1. 本站所有资源来源于用户上传和网络等,如有侵权请邮件联系本站整改team@lcwl.fun!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系本站工作人员处理!
6. 本站资源售价或VIP只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 因人力时间成本问题,部分源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
9.本站所有源码资源都是经过本站工作人员人工亲测可搭建的,保证每个源码都可以正常搭建,但不保证源码内功能都完全可用,源码属于可复制的产品,无任何理由退款!

网站搭建学习网 JavaScript Let、Const 和 Var 概述:主要差异解释 https://www.xuezuoweb.com/10373.html

常见问题
  • 本站所有的源码都是经过平台人工部署搭建测试过可用的
查看详情
  • 购买源码资源时购买了带主机的套餐是指可以享受源码和所选套餐型号的主机两个产品,在本站套餐里开通主机可享优惠,最高免费使用主机
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

Fa快捷助手
手机编程软件开发

在手机上用手点一点就能轻松做软件

去做软件
链未云主机
免备案香港云主机

开通主机就送域名的免备案香港云主机

去使用
链未云服务器
免备案香港云服务器

支持售后、超低价、稳定的免备案香港云服务器

去使用