JavaScriptの結び目(一)

2012 ワード

1.関数の定義について

if (false) {
    function f() {
        return 1;
    }
}
f();
上のjsはIE、Chromeの下でいずれも1を出力します.なぜならばJavaScript解析プログラムが一つの関数function f(){}に出会う時は運行前の解析過程で定義されています.作用領域の頭(サイの本の第六章と第八章を参照してください)に定義されています.
しかし、Firefoxではf未定義のエラーが報告されます.これは関数がifなどの制御文に定義されていないため、Firefoxは制御文の関数定義を解析できません.
2.Delete
Deleteはオブジェクトの属性を削除できますが、var文によって作成された特性または複数の特性は削除されません.
delete演算子で削除できます.delete削除が成功したらtrueに戻ります.そうでなければfalseに戻ります.
3.Finally
フィnallyが文から異常を持ち出した場合、その例外は投げられた過程における異常に取って代わって、
例えば:

try {
    throw "try block";
} catch (e) {
    console.log(e);
} finally {
    throw "finally block";
}
コンソールは「finally block」を出力します.また、もしfinallyが文からreturn文に実行されたら、未処理の異常を抛り出しても、方法は正常に戻ってきます.
4.プロトタイプチェーン
Var p=new Person()この文は実際に次のような過程を実行しています.
pに対する_u u uを通してプロト.PにPerson.prototypeの属性と方法を統合させ、
pがメソッドを呼び出すと、彼の_u u u u u u u u uに行く.プロト.探していますが、見つけられないなら、それに引き継がれるかもしれません.プロト.の中で探して、このように原型の鎖を構成しました.Prototypeは補助だけです.プロト.プロトタイプチェーンを作成するツール.
5.HasOwnPropertyとpropertyIs Enumerable()
二つの方法は、オブジェクトの一つの非継承属性が一つのfor/inサイクルにあるかどうかを判断するために使用できます.
エニュメレート・エニュメレート・属性は通常継承属性であるため、二つの方法はほぼ同じ結果を返します.
6.ソト()
Aray.Sort()は、配列中の要素を文字列の順序で並べ替えます.数字の大きさではなく、数字の大きさで並べ替えるなら、次のコードが使えます.

var arr = [1,22,3,44,5];
arr.sort(function (a, b) {
    return a - b;
});
a<bの場合、aはbの前に並ぶ.逆にbはaの前に並ぶ.
7.Slice()とsplice()
Slice(start,end)は、下付きstartからendまでの1つの配列の断片を列記しています.正しいです.
配列は処理され、フラグメントの配列が返されます.
Splice(start,length,item)は、切り取り配列の中で、下付きstartから始まり、長さはlengthの配列であり、item配列はカットオフ位置に置かれるという方法で配列を処理します.
8 Push()
Push()メソッドは、挿入後の配列の長さを返します.
9.Agments
Agmentsオブジェクトは同じ配列のオブジェクトで、Dcument.getElements ByTagName()
同様の配列のオブジェクトを返します.このオブジェクトを遍歴する方法は、アーラy.slice(argments)でargmentsを配列に変えて遍歴することである.
以上の結び目に問題があります.ご指摘をお願いします.ありがとうございます.