このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
js:module [2021/07/05 10:26] y2sunlight [グローバルスコープに関する注意] |
js:module [2021/07/05 10:36] (現在) y2sunlight [グローバルスコープに関する注意] |
||
---|---|---|---|
行 150: | 行 150: | ||
モジュールの機能は単独のスクリプトのスコープに対してインポートされます。インポートされた機能はインポートしたスクリプトの内部からしかアクセスできません。即ち、インポートされた機能はグローバルスコープから利用することはできません。 | モジュールの機能は単独のスクリプトのスコープに対してインポートされます。インポートされた機能はインポートしたスクリプトの内部からしかアクセスできません。即ち、インポートされた機能はグローバルスコープから利用することはできません。 | ||
- | <sxh javascript; | + | また、モジュールの場合、自動的に [[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Strict_mode|Strict モード]]になり、var命令の省略は禁止されます。 |
- | mport { School } from './school.js' | + | |
- | + | ||
- | var local_school = new School(' | + | |
- | console.log(local_school.name); | + | |
- | + | ||
- | // global_school = new School(' | + | |
- | // console.log(global_school.name); | + | |
- | </ | + | |
<sxh html; | <sxh html; | ||
行 170: | 行 162: | ||
<script type=" | <script type=" | ||
< | < | ||
+ | // local_schoolはモジュールの内部からしかアクセスできない | ||
console.log(local_school.name); | console.log(local_school.name); | ||
foo_school = new School(' | foo_school = new School(' | ||
行 176: | 行 169: | ||
</ | </ | ||
</ | </ | ||
- | > TODO:module内ではグローバル変数が使えない? | + | |
+ | <sxh javascript; | ||
+ | import { School } from ' | ||
+ | |||
+ | var local_school = new School(' | ||
+ | console.log(local_school.name); | ||
+ | |||
+ | // モジュール内ではグローバルスコープを持つ変数が作成できない。 | ||
+ | // global_school = new School(' | ||
+ | // console.log(global_school.name); | ||
+ | </ | ||
+ | |||
+ | <sxh javascript; | ||
+ | export class School { | ||
+ | constructor(name) { | ||
+ | // プロパティの定義 | ||
+ | this.name = name; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | \\ |