式とは
評価して値が生成されるもの
=演算子のように副作用を起こすこともあるが、通常式自体は何もしない。
文とは
JSに何かをさせるのもの(副作用のあるもの)
式文
副作用を伴う式が最も簡単な文
- 代入文 s = "aaa"+ "bbb", i *= 3
- counter++
- delete o.x
- 関数実行()
- 何もしない関数は実際にはありえないので式文。
- function文自体は静的な定義をするだけなので、厳密には文ではない。動的なものが文。
式にはセミコロンが必要
文ブロック
{}は複数行を1行として扱う。
ifやfor、returnで使用される。
for/in文
オブジェクトのプロパティを取り出して処理。
オブジェクトのプロパティの名前をすべて配列にコピー for(a[i++] in o){}
- for/inループの中で、プロパティを削除すると、そのプロパティはfor/inで処理されない。
- ループの中で新しいプロパティを定義した場合、for/inループで処理されるかはJSの実装による。
- for/inはすべてのプロパティを調べられるわけではない
function文
関数定義時に実行されるのではなく、実行演算子()で実行される。
定義は事前にコンパイルされ新しく関数オブジェクトが生成される。
この関数オブジェクトは関数名をプロパティ名とした(グローバルオブジェクトまたはCallオブジェクトの)プロパティに関連付けられる。
事前に解析されているので、function文の定義より前の行で実行できる。
補足
CallオブジェクトはActivateオブジェクトのこと。AvtivateはECMA仕様で使用されてる名前。
0 件のコメント:
コメントを投稿