javascriptのstaticについて

投稿者: Anonymous

以下のコードは文法的に正しいでしょうか?
chromeで実行するとしっかり実行できますが、monacaで実行するとエラーになるので調べてみましたが、以下の文法がそもそも正しいのかがわかりませんでした。
というより、ググった限りでは正しくなさそうでした。
よろしくお願いいたします。

_x000D_

_x000D_

<script>_x000D_
  'use strict';_x000D_
_x000D_
  class A {_x000D_
      static i = 'iii';_x000D_
  }_x000D_
_x000D_
  console.log(A.i);_x000D_
_x000D_
_x000D_
</script>

_x000D_

_x000D_

_x000D_

解決

staticでプロパティ(メソッドではなく)を宣言する構文は、将来的にJavaScriptに追加される予定の構文です(static public fields)。ですから、現時点では正しい構文ではありませんが、将来的には正しい構文になります

Chromeではこの新構文を先取りして利用可能にしているためすでに動作しますが、他のブラウザはまだ未対応のため動作しません(参考:compat table)。

実際に確かめてはいませんが、monacaで実行した場合はWebViewがChrome相当の場合のみ動作するため、新しいAndroidなら動作するが古いAndroidやiOSでは動作しないという挙動になると思われます。

これらの環境でもstaticプロパティ構文が動作するようにするためには、Babelなどを用いたトランスパイルが必要です。トランスパイルの方法についてはmonacaのドキュメント等を調べると良いと思います。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *