最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • Let、Const 和 Var 概述:主要差异解释

    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.
    
    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » Let、Const 和 Var 概述:主要差异解释
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 291稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情