JavaScriptとは
- スクリプト言語
- インタプリタ型言語
- JavaScriptでのオブジェクト=連想配列
###オブジェクトリテラルの記法
Object.propertyName
Object['propertyName']
##比較演算子
###等価演算子 ==
データ型が違ってもなんとか等しいとみなせないかとがんばってくれる演算子
document.writeln('3.14E2' == 314); // true
document.writeln('0x10' == 16); // true
document.writeln('1' == 1); // true
###同値演算子 ===
等価演算子と違う点は、データ型を変換しないところ
document.writeln('3.14E2' === 314); // false
document.writeln('0x10' === 16); // false
document.writeln('1' === 1); // false
##関数
定義方法
- function命令
- 関数リテラル(=匿名関数)表現
- Functionコンストラクタ経由
- 特徴
- 引数や関数本体を文字列として定義できる
- スコープとしてグローバルオブジェクトからなるスコープチェーンを引き渡す
- 特徴
###関数が評価されるタイミング
関数リテラル・Functionコンストラクタは実行時(代入時)に評価される
→呼び出し元のコードより先に記述する
##スコープ
- グローバル:関数外で定義
- ローカル:関数内で定義
- ローカル変数は関数の先頭で宣言する
- 変数定義にvar命令は必須
- 無名関数にするとスコープに依存しなくなる(どんな関数やメソッド内に記載しても動く)
- 文ブロックレベル({...})のスコープは存在しない。以下のコードが正しく動作する
if (true) {
var i = 5;
}
document.writeln(i); //5
##クロージャ
シンプルなオブジェクト
- 処理をひとつしか持たないオブジェクトのようなもの
- ローカル変数を参照している関数内関数
- 状態を持てる
##他
###JavaScriptではすべての引数は省略可能である
- argumentsオブジェクトの用途…可変長引数関数なので柔軟に処理を記述できる
- 与える引数の数が関数側で要求する数と異なっていてもチェックしない
- 明示的に宣言された引数と可変長引数を混在させることも可