首页 > web前端 > js教程 > 正文

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

WBOY
发布: 2024-08-08 14:03:03
转载
609人浏览过

let、const 和 var 概述:主要差异解释

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

范围:

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

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

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 示例(块作用域)

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 示例(块作用域)

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。

console.log(myvar); // outputs: undefined
var myvar = 10;

登录后复制
  • let 和 const 被提升但未初始化。这意味着从块开始到遇到声明,它们处于“临时死区”。
console.log(mylet);
// referenceerror: cannot access 'mylet' before initialization
let mylet = 10;
登录后复制
console.log(myconst); 
// referenceerror: cannot access 'myconst' before initialization
const myconst = 20;

登录后复制

重新分配和重新初始化:

  • var 可以重新初始化(再次声明)和重新分配(分配新值)。 ### 使用 var 的示例
var x = 10;
x = 20; // reassignment
console.log(x); // outputs: 20

var x = 30; // reinitialization
console.log(x); // outputs: 30

登录后复制
  • let 不能在同一范围内重新初始化,但可以重新分配。
let y = 10;
y = 20; // reassignment
console.log(y); // outputs: 20

let y = 30; // syntaxerror: identifier 'y' has already been declared
登录后复制
  • const 不能重新赋值;它必须在声明时初始化。但是,如果 const 是对象或数组,则可以修改对象或数组的内容(属性或元素)。 ### 使用 const 的示例
const z = 10;
z = 20; // typeerror: assignment to constant variable.

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

登录后复制

const 对象的示例

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 数组的示例

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.
登录后复制

以上就是Let、Const 和 Var 概述:主要差异解释的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:dev.to网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号