【问题标题】:Is there a way to define symbolic constants in Javascript?有没有办法在 Javascript 中定义符号常量?
【发布时间】:2009-03-26 16:41:12
【问题描述】:

我搜索了 JavaScript 是否提供了定义符号常量的方法,但没有找到任何东西。我错过了什么 ?

改用 const var 是一种常见的做法吗?

var const MAXIMUM_VALUE = 100; 

谢谢。

【问题讨论】:

    标签: javascript constants


    【解决方案1】:

    const不被IE支持,所以如果你想支持IE是不可能的。

    据我所知,为了简单起见,最好的方法是为您的常量设置一个命名约定,例如广受欢迎的 ALL UPPERCASE。有一些例子可以强制使用常量,但它们在大多数情况下并不值得。或者,您可以使用一个函数:

    function myConst() { return 'myValue'; }
    

    这当然仍然可以被覆盖,但我已经看到它使用过。

    另见:

    【讨论】:

    • 您仍然可以替换 myConst 函数。后面的代码: myConst = function() { return 'newValue'; }
    • 我认为 const 现在可以在 IE 中使用,但不能在 Opera 中使用。这是错的吗?
    • 我知道,但这需要刻意的努力。
    • 我找不到其他类似的问题 - 即使使用谷歌。
    • 当我想在这个站点中查找某些内容时,我通常会执行“site:stackoverflow.com ”。谷歌的搜索比内置的好太多了。
    【解决方案2】:

    是的。但是你删除了var。 const 替换 var。

    const MAXIMUM_VALUE = 100;
    

    【讨论】:

      【解决方案3】:
      Object.defineProperty(window, 'CONSTANT_NAME', {value: CONSTANT_VALUE});
      
      // usage
      console.log(CONSTANT_NAME);
      

      Object.defineProperty() 创建一个具有以下默认属性的属性:

      • configurable 当且仅当此属性描述符的类型可以更改并且可以从相应对象中删除该属性时才为真。 默认为 false。

      • enumerable 当且仅当在枚举相应对象的属性期间显示此属性时才为真。 默认为 false。

      • writable 当且仅当与属性关联的值可以通过赋值运算符更改时才为真。 默认为 false。

      如果“常量”是一个对象,您可能还想通过冻结它使其不可变。 obj =Object.freeze(obj)。请记住,子属性对象不会自动冻结。

      【讨论】:

        猜你喜欢
        • 2013-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-30
        • 2011-01-15
        • 1970-01-01
        相关资源
        最近更新 更多