【问题标题】:Node JS allowing constants to be changed [duplicate]Node JS允许更改常量[重复]
【发布时间】:2016-10-26 21:53:31
【问题描述】:

为什么 node.js 允许更改指定为常量的模块(或对象)?

例如,这是允许的:

const EXPRESS = require('express');
EXPRESS.someProperty = 'some value';

但这不是:

const MYCONST = '123';
MYCONST = '456';

【问题讨论】:

    标签: javascript node.js ecmascript-6


    【解决方案1】:

    const 表示您不能更改引用本身,而不是引用指向的内容。

    const a = { name: 'tom' };
    
    // you cannot change the reference (point a to something else)
    a = 5; // this is an error
    
    // but you can change the value stored at that reference with no problem
    a.name = 'bob';
    

    【讨论】:

    • 所有好的答案。谢谢大家的解释。
    【解决方案2】:

    const 不会使对象变得不可变,因此您可以更改对象本身,但不能将另一个对象分配给该引用

    https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/const

    【讨论】:

      【解决方案3】:

      来自文档:

      const 声明创建对值的只读引用。它 并不意味着它持有的值是不可变的,只是变量 无法重新分配标识符。例如,如果内容是 一个对象,这意味着对象本身仍然可以更改。

      这不是特定于节点的,它是 Javascript 规范的一部分。引用EXPRESS 是常量,使用const 声明时,不允许重新分配引用。

      const EXPRESS = require('express');
      EXPRESS = 'something else';
      

      也会失败

      【讨论】:

        猜你喜欢
        • 2022-06-12
        • 2020-05-12
        • 1970-01-01
        • 1970-01-01
        • 2017-11-04
        • 1970-01-01
        • 1970-01-01
        • 2019-05-24
        • 1970-01-01
        相关资源
        最近更新 更多