パーフェクトJavaScript 1~3章
2章 JavaScriptの基礎
- varは省略するとグローバル変数になる
- varは省略するな
- 定数にはconstを使う
- 定位数はすべて大文字にする慣習がある
- しかしこれはJSの独自拡張で再代入してもエラーはでない
- 関数リテラルは関数と違って式なので式の中にかける
- 関数宣言文と関数リテラル式の変数への代入の働きはほぼ同じ
// 関数宣言文 function sum1(a, b){ return Number(a) + Number(b); } // 関数リテラル式の変数への代入 var sum2 = function(a, b){ return Number(a) + Number(b); }
- 関数宣言文で定義した関数名を右辺に書いて代入することもできる
var sum3 = sum1;
- オブジェクトは本質的に名前がない
- 名なしのオブジェクトを名前で呼ぶために変数が存在する
- 名なしの関数を名前で呼ぶために関数名が存在する
- Javascriptのオブジェクトはプロパティ(名前と値のペア)の集合
- オブジェクトリテラル式は中括弧{}で囲んで表現できる
{ プロパティ名:プロパティ値, プロパティ名:プロパティ値, プロパティ名:プロパティ値, ...}
- ECMAScript5では許されているが最後をカンマで終わるオブジェクトリテラルは避ける
- ドット演算(.)でプロパティにアクセスできる
- ドット演算子の後ろにプロパティ名を書くとプロパティ値を読み出せる
- 存在しないプロパティ値に代入すると新規プロパティの追加
- プロパティアクセスはドット演算子以外に配列のアクセスっぽくブラケット[]演算子でも可能
var obj = {x:3, y:4}; // 同じ var x1 = obj.x; var x2 = obj[x]:
- オブジェクトのプロパティに関数を代入することもできる
obj.fn = function (a, b) {return Number(a) + Number(b);};
- new式でオブジェクトを生成できる
- newのあとに書くのは関数名
- newのあとに関数名を書くとその関数をコンストラクタとして呼び出す
- 配列の要素には異なる型の値を並べることができる
3章 JavaScriptの型
- 以下の5つが基本型
- 文字列型
- 数値型
- ブーリアン型
- null型
- undefined型
- これ以外の型をオブジェクト型という
- 基本型のインスタンス => 値
- オブジェクト型のインスタンス => オブジェクト
- 基本型変数 => 数値などの値そのものを持つ
- 参照型変数 => オブジェクトの参照を持つ
- NaNはNaN以外になることはない
- isNaNという関数が用意されている
- null型は===で判定する必要がある
- undefined値は以下の様なところに現れる
- 未初期化変数の値
- 存在しないプロパティ値
- 実引数を与えずに関数を呼んdなとき関数内の対応する引数の値
- return文がないかreturn文に式がない場合の関数の戻り値
- void演算子の評価結果
- undefined値を得たいときは
void 0
- jsの型変換でfalseになる例
数値 0
数値 NaN
null値
undefined値
文字列値"( 空文字列値)
- オブジェクト型をブーリアン型に型変換すると必ずtrueになる