4章 文、式、演算子
識別子
- p71 変数名や関数名など、何かを指定するための単語
- 単語の長さの制限はない
- Unicodeの単語なので、日本語を使うことは可能だが推奨しない
- p72 大文字小文字は区別する
- $は、よく使う名前のイディオム。prototype.jsが使い始め、jQueryも同様
文
- 式文の最後は;を付ける
- ブロックには;は不要
- JavaScriptでは改行時に;が省略されていると自動的に補完する。ただし、バグのもとなので省略はしない方がよい
ブロック文
- {}で囲んだ間の文
- JavaScriptでは変数にブロックスコープがない
p74 変数宣言文
関数宣言文
式文
- 式がそのまま文になる文法規則
- JavaScriptは全ての式が式文になるので、計算結果を代入しないなどの無意味な式もエラーにならない。書き間違え時の警告がないので注意
p75 空文
- ;のみの文。条件を待つだけのwhile(繰り返し条件);などの;に利用
p76 制御文
- 条件分岐、繰り返し、ジャンプ(例外処理)がある
- 上記以外は順次処理
if-else文
- 条件式は暗黙の型変換などがあるので注意
- p77 ifとelseの対応を明示するため、ブロック文にすることを推奨
- p78 ただし、elseに続けてifを書く場合は、else ifと続ける方がイディオム
switch-case文
- p79 switch()のカッコ内に、任意の型の式が書ける
- caseの後ろに任意の式が書ける
- caseは同値演算子(===)で比較
繰り返し文
for (変数 in オブジェク式)
- p87 オブジェクトのプロパティ名を列挙する
- for eachとは別物。for eachを持つJavaScriptもあるが、ECMA Scriptの標準ではない
- p88 オブジェクトが持つプロパティを処理するイディオム。.ではなく、[]でアクセスする
var obj={x:1,y:3,z:2}; for (var k in obj) { print(obj[k]); }
- p89 配列でfor(in)は動作するが、列挙順が不定、列挙されないプロパティがある、プロトタイプ継承したプロパティも列挙するなどがあるので、推奨されない
p90 break文
continue文
ラベルを使ったジャンプ
- p92 ネストした繰り返し文からまとめて外に出る時などに利用
outer_loop: while(true) { while(true) { break outer_loop; } }
- 繰り返し文の前にラベルを記載する。breakやcontinueの後ろにラベルを追記すると、ラベルのついた文を抜ける
return文
- p93 式を省略するとundefined値が返る
例外
- throw 式;で投げられる。特定の計算でも暗黙で例外を発生
- try-catch-finally内で利用
- 例外は全てcatchする
その他
- p95 with文はECMA Scrpt5のstrictモードで使用禁止になったので非推奨
p95 コメント
式
- p96 演算子と優先順位
式の評価
- 文の実行をexecute
- 式の評価をevaluate
- p97 式の評価順
演算子の優先順序と結合規則
同値演算子
- ===と==のこと(!==と!=も)
p102 in演算子
p103 instanceof演算子
論理演算子
p104 ビット演算子
- &、|、^、<<、>>、>>>、~がある
p105 代入演算子
- Javascriptでは、if(x=y){}という式は、yのブーリアン値を評価して動作するので誤りとは言えない。ただし、誤表記の可能性があるので、推奨しない
算術代入演算子
- +=と-=