【问题标题】:The const keyword in JavaScript: [duplicate]JavaScript 中的 const 关键字:[重复]
【发布时间】:2014-08-13 18:14:48
【问题描述】:

今天(2014 年)是否建议使用 const 关键字在 JavaScript 中声明常量?是否仍然存在浏览器兼容性问题?另外,有没有办法声明一个全局常量?

注意:这个问题不是重复的,我问的是 2014 年。Stack Overflow 中的其他帖子可以追溯到 2008-2012 年

【问题讨论】:

  • 是的,旧浏览器仍然存在兼容性问题。如果您需要更多详细信息,请指定目标浏览器/引擎版本。
  • const 关键字在 JavaScript 1.7 中引入并且在当前的 Firefox 中仍然很明显,它的行为与 EcmaScript 和谐设想的 const 关键字不同。
  • 只有当您支持的浏览器不兼容时才会出现兼容性问题。只有您才能知道它是否适合您的用途。
  • ES6 const 浏览器兼容性:kangax.github.io/compat-table/es6/#const
  • 我强烈建议不要这样做;您应该在严格模式下编写 JavaScript,这明确禁止 const。如果它有效,那么你很可能做错了什么。 ES6 暂时不能安全地广泛使用。

标签: javascript global-variables constants


【解决方案1】:

截至 2014 年 6 月,MDN 表示:

当前的 const 实现是 Mozilla 特定的扩展 并且不是 ECMAScript 5 的一部分。它在 Firefox 和 Chrome 中受支持 (V8)。从 Safari 5.1.7 和 Opera 12.00 开始,如果您定义了一个变量 在这些浏览器中使用 const 后,您仍然可以更改其值。它 Internet Explorer 6-10 不支持,但包含在 Internet Explorer 11。 const 关键字当前声明 函数范围内的常量(如用 var 声明的变量)。

Firefox,至少从版本 13 开始,如果你 重新声明一个常数。主流浏览器均不产生任何通知 如果为常量分配另一个值,则会出现错误。返回值 这样的操作是分配的新值的操作,但是 仅在 Firefox 和 Chrome 中重新分配不成功(至少 从第 20 版开始)。

const 将由 ECMAScript 6 定义,但有不同的 语义。类似于用 let 语句声明的变量, 用 const 声明的常量将是块范围的。

参考here

【讨论】:

    【解决方案2】:

    const 是在 JavaScript 1.5 中引入的,是 Mozilla 特定的扩展,不是 ECMAScript 5 的一部分。

    然而,ES6 草案引入了不同的const。与使用let 语句声明的变量类似,使用const 声明的常量将是块范围的。

    所以基本上:

    • 一些浏览器实现旧的非标准方式。
    • 其他浏览器允许使用const 声明的变量稍后更改其值。
    • 其他浏览器根本没有实现它。
    • 目前没有浏览器 (AFAIK) 实现 ES6 方式。

    MDN article

    【讨论】:

    • 我认为这会得出这样的结论,除非你编写的代码只会针对一个特定的 JS 引擎执行(比如在 node.js 中运行),否则你几乎不能使用 @ 987654327@ 现在因为行为是可变的,并且将来会改变。
    猜你喜欢
    • 2017-10-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多