サイ本

P126(8.2.1):関数への引数が省略されたかの判断

今までずっとtypeof()を使い、以下の様にチェックしていた。 function hoge(a) { if( "undefined" == typeof(a) ) { alert("引数省略"); } else { alert("引数あり"); } } しかし以下の様に書ける。 function hoge(a) { if(!a) { alert("引数省略"); } else …

P108(7.3):オブジェクトのプロパティへのアクセス方法

object.property object["property"] この2文は等価。 ただし後者はプロパティ名を文字列で指定しているので、例えばループ文で生成した文字列でのアクセスが可能になる。 for(y = 0, cnt = 5; y < cnt; y++) { obj["property" + y] = y; } このような使い方…

P115(7.6.2):配列要素の削除の注意点

配列要素にdelete()を掛けると要素が削除されるのではなく、未定義になるだけ。 var array = new Array("A", "B", "C"); alert(array); //A,B,C alert(array.length); //3 delete(array[1]); alert(array); //A,,C alert(array.length); //3 alert(array[0])…

P82(6.2):複合文

中括弧({})で囲われた範囲が複合文。 複合文末尾にはセミコロンを付けない。 { a = 0; b = 0; c = 0; } 複合文内は1つの文として扱われるが、実行は通常通り1行ずつ行われる。 うーん、今一使い所が分からない。

P52(4.3.1):ブロックレベルのスコープはない

function hoge() { for(var y = 0; y < 3; y++) { alert(y); //0,1,2 } alert(y); //3 } for文の中で宣言された変数yは、for文を抜けても有効。 for文の中でしか有効じゃないと思い込んでいたので目から鱗でした。

P54(4.4):配列の代入は参照渡し

function hoge() { var array = new Array("A", "B", "C"); var pnt = array; alert(pnt); //A,B,C array[0] = "a"; alert(pnt); //a,B,C } あまりこういう書き方はしないんだけれど、しっかり覚えておかないとバグの温床になる予感。