!!!初めてのJavaScript(基本) {{amazon 4873113229}} http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference !!データ型と変数 !スコープ *varをつけると、関数内で有効。つけないとグローバルとなる。 *varをつけても、ブロックレベルの変数にはならない。 !単純なデータ型 *JavaScriptには、以下の3つの単純なデータ型しかない ,型,内容 ,string,文字列 ,numeric,数値 ,boolean,真偽値 *一方で、[[String、Number、Boolean|JavaScript 組み込みオブジェクト(Number,String,RegExp,Date,Math)]]という組み込みオブジェクトも存在する。 !nullとundefined *nullは定義がされたが、値が設定されていない状態 *undefinedは宣言されたが、初期化されていない状態 !定数 *キーワード const を利用すると、定数になる *IE7.0は対応していない? !!演算子と文 !演算子 ,演算子,意味 ,+,加算 ,-,減算 ,*,乗算 ,/,除算 ,%,剰余 ,++,インクリメント ,--,デクリメント !ビット演算子 ,演算子,意味 ,&,ビット論理積(AND) ,|,ビット論理和(OR) ,^,ビット排他的論理和(XOR) ,~,ビット否定(NOT) ,<<,左シフト ,>>,符号付右シフト ,>>>,符号なし右シフト newValue = oldValue << 1; '左に1ビットシフト !条件文 ::if、if else if (式) { ・・・ } if (式) { ・・・ } else { ・・・ } ::switch switch (式) { case ラベル1: ・・・ break; case ラベルn: ・・・ break; default: ・・・ } !等値演算子 *「==」等値演算子 *「!=」 不等値演算子 *データ型を変換する->2つの変数が数値と文字列の場合、数値を文字列に置き換えてから比較する。 alert(("1.0" == 1)); // 結果は true *「===」同値演算子 または 厳密等価演算子 *「!==」厳密不等価演算子 *値とデータ型の両方が等しいときだけ結果が真 *JavaScript1.3から alert(("1.0" === 1)); // 結果は false alert((1.0 === 1.0)); // 結果は true alert(((new Number(1.0)) === (new Number(1.0)))); // 結果は false var num1 = new Number(1.0); var num2 = num1; alert((num1 === num2)); // 結果は true !比較演算子 ,演算子,内容 ,>,左が右より大きい ,>=,左が右以上 ,<,左が右より小さい ,<=,左が右以下 !三項演算子 *条件 ? 真のときの値 : 偽の時の値; var isAdult = (age >= 20)? true : false; !論理演算子 ,演算子,内容 ,&&,論理積演算子 両辺が真の時のみ真 左辺が偽の時右辺は評価されない ,||,論理和演算子 両辺の何れかが真の場合真 左辺が真の場合右辺は評価されない !繰り返し ::while *条件が真の間繰り返し while (条件) { ・・・ } ::do while *条件が真の間繰り返し *条件を満たさなくても、1回処理される do { ・・・ } while (条件) ::for for (初期値設定; 条件; 更新) { ・・・ } ::for in ==配列の要素を取り出す== for (変数名 in 配列) { ・・・ } ※ for in を利用してもビルトインのプロパティ(String.indexOf、Object.toString)は取得できないが、ユーザが定義したプロパティは取得される。 → 配列の要素取得に利用すべきではない! // 例 function test() { var s = ['a', 'b']; s.foo = "foo"; s.bar = function() { alert("bar"); }; var i=0; for (p in s) { document.write(p + " : " + s[p] + "
"); } } // 結果 0 : a 1 : b foo : foo bar : function() { alert("bar"); } documentのプロパティを列挙 var win = window.open("","_blank"); for (elm in document) { win.document.write(elm + "
"); } win.document.close(); 条件判定にも利用できる(linkColor プロパティがdocumentオブジェクトに存在するか) alert(("linkColor" in document)); // true ----