Browser

Microsoft Edge(Project Spartan, Internet Explorer) 、ブラウザ周辺、Web フロントエンド開発、UI、など

Microsoft Edge まとめページ

グローバルで使用するクラスのお話 for JavaScript [修正]

コメントでご指摘いただき修正しました

 

JavaScript のクラスは扱い的に関数のようです。

f:id:x67x6fx74x6f:20160705152031p:plain

 

ですが、関数とは異なり const や let のように変更ができません。
(確か仕様でも const、let と同じくくりだったはず)

 

その為か、同じスコープ内にある同名のクラスは一度宣言すると中身が変えられないようです。

<script>
    class A{}
    class A{} // エラー
</script>

 

ブラウザで上記の命令を実行した際のエラー文

Chrome

f:id:x67x6fx74x6f:20160705152127p:plain

Edge (Build 10586)

f:id:x67x6fx74x6f:20160705152202p:plain

Firefox

f:id:x67x6fx74x6f:20160705152222p:plain

Safari Technology Preview

f:id:x67x6fx74x6f:20160705152331p:plain

 

また、関数と同等らしいので delete が使用できません。

 

追記: 再定義はできないが再代入は可能

教えていただいた実行サンプル
https://jsbin.com/pijojotena/edit?js,console

値とクラスの代入が行われており、内容の変更ができています。

 

 

まとめ

グローバルで1度クラスを宣言すると、内容を変えることもできませんし、 再定義をすることができなく、消すこともできないこととなります。
また、再代入は可能とのことです。

スポンサーリンク