JavaScript宣言関数の方式及び各方式の違い

2272 ワード


       


1.


function    (  1,  2,...){
    //      
}
1:

function sum(num1,num2){
    return num1+num2;
}
2.
その は の りです

var     = function(  1,  2,...){
                //      
            };
2:

var sum = function(num1,num2){
    return num1+num2;
};
        2は を し、 として します. の ろに がないのは、 を って を する に、 を う がないからです. sumで を することができます.また、 の を するように、 を って を すると、 の にセミコロンがあります.
3.Functionコンストラクターを する
        Functionコンストラクタは の のパラメータを け り、 のパラメータは 、 のパラメータは しい のパラメータを げます.その は の りです

var     = new Function("  1","  2",...,"  n","   ");
3:

var sum = new Function("num1","num2","return num1+num2");
の い
        な から, をFunctionコンストラクタで する は であるが, を するのはこの が2つのコードを し, に するからである. のJavaScriptコードを めて し、 されたコンストラクタの を 2 します.しかし、このような は「 はオブジェクトであり、 はポインタである」という を するために に である.
        と の2つの の にとって、 は ではない. は、まず を み り、 のコードを する に にします. については、 がそのコード に されるまで、 に されて される があります. をあげましょう.
4

alert(sum(10,10));//20

function sum(num1,num2){
    return num1+num2;
}
        4の は20です.なぜですか?コードが される に、 は を じて(function declaration hoisting)アップグレードのプロセスを い、 に を しました.コードの を める 、jsエンジンは 1 で を して、それらをソースコードツリーの に きます.したがって、 がコードを び した でも、jsエンジンは を に げることができます.しかし、 の を に すると、 にエラーが します.
5

alert(sum(10,10));//20

var sum = function(num1,num2){
    return num1+num2;
};
        5は ではなく に があるため、エラーを します. い えれば、 のあるステートメントに する に、 sumには への は されません.また、 の のコードは されません. には の にも されません.