【问题标题】:javascript constant and opera browserjavascript常量和opera浏览器
【发布时间】:2012-09-22 15:25:03
【问题描述】:
<html>
   <head><title>Using the const Keyword</title>
       <script type="text/javascript">
          const NOON = 12;
          const FREEZING = 32; // Can't change
       </script>
   </head>
  <body bgcolor="silver">
    <big>
    <script type="text/javascript">
      document.write("Fahrenheit temp is " + FREEZING + ".<br />");
      FREEZING =32 + 10;
      NOON = NOON + " noon";
      document.write("Make it warmer " + FREEZING + ".<br />");
      document.write("See you at ", NOON, ".<br />");
    </script>
  </big>
 </body>
</html>

以上代码在 Firefox、Chrome、Safari 上运行良好,但不适用于 Opera 12.02。由于我使用了关键字 'const' 结果应该如下

华氏温度是 32。 让它暖和起来 32. 12 点见。

但是Opera浏览器显示

华氏温度是 32。 让它暖和起来 42. 中午12点见。

这里有什么问题。

【问题讨论】:

    标签: javascript constants


    【解决方案1】:

    From here

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

    【讨论】:

      【解决方案2】:

      问题是 const 在 Opera 中不受官方支持,仅此而已。开发人员声称这一点已经很长时间了,但它仍然落后。它仍然不是 ECMASCript 的一部分。

      试试这个:

      Object.defineProperty(window, "NOON", {
          value: 12, writable: false, configurable: false
      });
      

      这在 Opera 中有效。如果你也打算支持 IE

      Object.defineProperty(window, "NOON", {
          get: function() {return 12;}
      });
      

      您仍然无法更改其值,但您可以将NOON 重新定义为Object.defineProperty

      【讨论】:

        【解决方案3】:

        const 不是标准的 JavaScript 关键字。并非所有浏览器都有它。请改用var

        var FREEZING = 32;
        

        【讨论】:

          【解决方案4】:

          终于浏览器支持它现在(2017)完美 -> https://caniuse.com/#feat=const

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-01
            • 2016-08-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-03-24
            相关资源
            最近更新 更多