javascript常量和Opera浏览器

时间:2012-09-22 15:25:04

标签: javascript const constants

<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。因为我使用了关键字&#39; const&#39;结果应如下

Farenheit temp是32。 让它变暖32。 12点见。

但是歌剧浏览器显示

Farenheit temp是32。 让它变暖42。 中午12点见。

这里有什么问题。

4 个答案:

答案 0 :(得分:3)

From here

  

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

答案 1 :(得分:2)

错误的是,const在Opera中没有得到官方支持,这就是全部。开发人员声称这已经很长时间了,但它仍然落后。它仍然不是ECMASCript的一部分。

请改为尝试:

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

这适用于Opera。如果你打算支持IE&lt; 9,你应该使用一些不同的东西(效率较低):

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

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

答案 2 :(得分:1)

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

var FREEZING = 32;

答案 3 :(得分:0)

最后,浏览器支持它现在(2017)完美 - &gt; https://caniuse.com/#feat=const