var宣言

関数外で定義された変数は、var宣言するしないに関わらずすべてグローバル変数となります。
関数内で定義された変数は、var宣言されていれば、必ずローカル変数となります。
しかし、var宣言していないものは、ローカル変数となるのかグローバル変数となるかはブラウザにより異なります。。
関数内でローカル変数を定義する際は必ずvar宣言した方が確実です。

関数内でvar宣言しない場合→無限ループ for (i=0; i<10; i++) { funcA(); } ・ ・ ・ funcA() { for (i=0; i<5; i++) { //処理A } return; }

var宣言した場合 funcA() { var i; for (i=0; i<5; i++) {

終了タグ

script要素内で「</」と記述すると、それをscript要素の終了タグと解釈されることがあります。
それを回避するために、script要素ないでは終了タグをバックスラッシュ「\」でエスケープします。

document.write("<u>サンプル<\/u>");

ドキュメントのキャプチャ

動的に生成されたドキュメントのソースをブラウザから見たい場合は、次のURLを改行を入れずにブラウザのアドレス/ロケーションボックスに入力します。

javascript: void window.open("","","").document.write("<textarea cols=80 rows=20>" +document.body.parentNode.innerHTML + "</textarea>")

文字列比較の注意点

(1)文字列値
var strA = "some data";
(2)Stringオブジェクト
var strB = new String("some data");

この両者を比較した場合、等値演算子(==)ではtrueに、同値演算子(===)ではfalseになります。
すなわち、
strA == strB    ⇒ true;
strA === strB   ⇒ false;
と判定されます。


数値の場合も同様です。
var numA = 45;
var numB = new Number(45);

この場合も
numA == numB    ⇒ true;
numA === numB   ⇒ false;
と判定されます。

カスタムオブジェクト

(1)カスタムオブジェクトの生成

カスタムオブジェクト function showAge() { alert(this.name + "の年齢は" + this.age + "才です。"); } function employee(name, age) { this.name = name; this.age = age; this.show = showAge; } 上記オブジェクトの生成 (1)コンストラクタによるオブジェクト生成 var emp1 = new employee("山本はるか", 23); (2)ショートカット形式によるオブジェクト生成 var emp2 = {name:"川村孝", age:23, show:showAge}; ・メッセージの呼び出し emp1.show(); emp2.show();

(2)デフォルト値の設定

コンストラクタ関数にショートカット演算子を設定します。
ショートカット演算子とは、論理和演算子(||)のことで、最初の値がnullまたはundefinedの場合、2番目の値が代入されます。
引数が指定されなかった場合は通常null値が設定されますが、ショートカット演算子を利用してデフォルト値を設定する事ができます。

function employee(name, age) { this.name = name; this.age = age || 0; this.show = showAll; }

(3)コンストラクタから他関数を呼び出す

function verify(obj) { alert(obj.name + "を追加しました。"); } function worker(name, age) { this.name = name; this.age = age; verify(this); } worker = new worker("田中健一", 30);