DeLLa.js | Google グループ
http://groups.google.co.jp/group/dellajs?hl=ja
以下、今回の気になったこと。
typeof演算子
データ型を返す。
i = 0;
typeof i;
typeof(i);
オペランドがオブジェクトか配列の場合、
「object」としか返さないので、別の方法が必要。
void演算子
volidの使い方がよくわからない。。。
i = void 0;
console.log(i);// undefined
delete演算子
オブジェクトプロパティや配列要素、変数を削除。
削除に成功した場合、trueを返す。
コアに組み込まれたプロパティやクライアントサイドのプロパティは削除できないものもある。
varで宣言された変数も削除できない。
暗黙的に宣言された変数はwindowオブジェクトのプロパティ(グローバル変数?)になるため、deleteで削除できる。
存在しないプロパティをdeleteしてもtrueが返る。
hoge = 'ほげ';
window.hoge; // ほげ
swhich文
ifとswitchでは、swhichの方がはやい?
caseは===で評価するから、処理が早い?
※詳細はlinger参照
dafaultは最後に記述するのが一般的だけど、
switch文のどこに記述しても良い
ラベル文
ラベル名で文を参照できる。
outerloop:
for (var i = 0;i < 10; i++){
for (var j = 0;j < 10; j++){
if(j>3) break outerloop;
console.log('i = ' + i);
console.log('j = ' + j);
}
}
console.log('FINAL i = ' + i); // FINAL i = 0
console.log('FINAL j = ' + j); // FINAL j = 4
ラベル名に変数名や関数名を使用できるが、使用すべきではない?
var n = 'labelname';
n:
for (var i = 0;i < 10; i++){
if(i>3) break n;
}
alert(i);//4
nはあくまでラベル名としてだけ判別されてるっぽい
文と式の違い
varは文。
var i;
for(var i = 0; i <10;i++) {}
for文の中にvar文。
つまりどういうことだろう。。。
throw文
例外をスローする。
普通はErrorオブジェクトか、Errorクラスのサブクラスのインスタンスを返す。
エラーメッセージを含む文字列や、エラーコードを表す数値を書いても良い。
f(-1);
function f(x) {
if (x<0) {
throw new Error("x must not be negative");
}
}
// エラー発生
f(-1);
function f(x) {
if (x<0) {
throw alert("error");
}
}
// アラート出す
with文
document.forms[0].input01.value = "test01";
document.forms[0].input02.value = "test02";
を
with(document.forms[0]) {
input01.value = "test1";
input02.value = "test2";
}
と書ける。
コードが短くなる。
ただwith文は最適化が難しいため処理が遅くなる。
らしい。
以下のように書いてもコードを短縮できる。
var form01 = document.forms[0];
form01.input01.value = "test1";
form01.input02.value = "test2";