【问题标题】:What is the core difference between using of (let) and (const) when we declare of a variable in javascript ES6 (ES2015)? [duplicate]当我们在javascript ES6(ES2015)中声明变量时,使用(let)和(const)之间的核心区别是什么? [复制]
【发布时间】:2019-09-11 00:19:56
【问题描述】:

我注意到letconst 相似并且行为方式相同,但是创建它们当然是有原因的,请您举例说明它们之间的区别

【问题讨论】:

  • 他们一点也不相似。基本上,使用const,您声明了一个具有最终值的变量。您不能分配新值。
  • 核心区别:let 是可变的,而const 是恒定的
  • 你查过两者的文档吗?它们有很好的记录。

标签: javascript ecmascript-6


【解决方案1】:

当您使用const 声明变量时,您无法更改值,

const name = 'john';
name = 'brad'; // throw error

但是当你用let声明变量时你可以改变它

let name = 'john';
name = 'brad';
console.log(name); // brad

【讨论】:

    【解决方案2】:

    letconst 的相似之处在于它们都具有块作用域。这意味着它们仅在它们声明的块中可用。

    它们的区别在于用let声明的变量可以被赋值,而用const声明的变量不能被赋值。

    let x = 3;
    x = 'changed';
    
    const y = 33;
    y = 'changed' //throws error.

    这里很重要的一点是const 只防止分配给新值而不是修改变量。

    const obj = {a:1};
    obj.a = 5 //will not throw error
    obj.b = 'something' //will not throw error
    obj = {x:1} //will throw error

    注意:如果const 用于声明原始类型(字符串、数字、符号、布尔值、未定义),则它永远不能更改。

    【讨论】:

    • “这里重要的一点是 const 只防止分配给新值而不是修改变量”....这条规则只适用于对象和数组,对吧?
    • @DaniMousa 是的。数组是对象。
    • @DaniMousa 请参阅blog.niftysnippets.org/2011/01/myth-of-arrays.html 以使数组是对象的概念更加清晰。
    • 抱歉,我有一个新问题,NaN 是否包含在上述规则中的原始类型中?
    • @DaniMousa 是的NaN 是原始类型,也是null
    猜你喜欢
    • 2014-04-14
    • 2021-09-15
    • 1970-01-01
    • 2021-11-15
    • 2018-12-22
    • 2019-07-25
    • 2015-05-02
    • 2019-08-09
    相关资源
    最近更新 更多