<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点见。
但是歌剧浏览器显示
华氏温度为32。让它变暖 42.中午12点见。
这是怎么回事。
从这里开始
const的当前实现是特定于Mozilla的扩展 并且不是 ECMAScript 5 的一部分。它在Firefox和Chrome中受支持 (V8)。从 Safari 5.1.7 和 Opera 12.00 开始,如果您定义了变量 在这些浏览器中使用 CONST 时,您以后仍然可以更改其值。它 在 Internet Explorer 6-9 或 预览版中不受支持 IE浏览器 10.const 关键字当前声明 函数作用域中的常量(如用 var 声明的变量)。
问题是 Opera 中没有正式支持const
,仅此而已。开发商声称这一点已经很长时间了,但它仍然落后。它仍然不是ECMASCript的一部分。
试试这个:
Object.defineProperty(window, "NOON", {
value: 12, writable: false, configurable: false
});
这在歌剧中是有效的。如果你也打算支持IE<9,你应该使用一些不同的东西(而且效率较低):
Object.defineProperty(window, "NOON", {
get: function() {return 12;}
});
您仍然无法更改其值,但您可以使用 Object.defineProperty
重新定义NOON
。
const
不是标准的JavaScript关键字。并非所有浏览器都有它。请改用var
:
var FREEZING = 32;
最后浏览器支持它现在(2017)完美 -> https://caniuse.com/#feat=const