2
<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 度暖かくしてください。また正午に会いましょう。

ここで何が問題なのですか。

4

4 に答える 4

3

ここから

const の現在の実装は Mozilla 固有の拡張機能であり、ECMAScript 5 の一部ではありません。Firefox と Chrome (V8) でサポートされています。Safari 5.1.7 および Opera 12.00 では、これらのブラウザーで const を使用して変数を定義すると、後でその値を変更できます。It is not supported in Internet Explorer 6-9, or in the preview of Internet Explorer 10. const キーワードは現在、関数スコープで定数を宣言します (var で宣言された変数と同様)。

于 2012-09-22T15:28:55.550 に答える
2

間違っているのは、それconstが Opera で公式にサポートされていないことです。それだけです。開発者がそれを主張してから長い時間が経ちましたが、それでも遅れをとっています. それはまだ ECMASCript の一部ではありません。

代わりにこれを試してください:

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

これはオペラで動作します。IE<9 もサポートする場合は、少し異なる (そして効果の低い) ものを使用する必要があります。

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

その値を変更することはできませんが、 で再定義NOONすることはできますObject.defineProperty

于 2012-09-22T15:29:56.397 に答える
1

const標準の JavaScript キーワードではありません。すべてのブラウザにあるわけではありません。var代わりに使用してください:

var FREEZING = 32;
于 2012-09-22T15:29:40.033 に答える