オブジェクト リテラルはオブジェクトを作成します:
var obj = {x:[1,2],y:23};
コードは以下と同じです。
var obj=new Object( );
obj.x=新しい配列(1,2);
テスト:
for(var i in obj) alter(obj[i]); 🎜>
関数リテラル: これはステートメントではなく式です。
次の例:
(function(){
document.write("スクリプト コード");
})()
var a=(function(s){return s})("abc ");
alert( a);
var b=function(s){return s};
alert(b("abc"));
方法これを説明します
誰もが覚えておくべきこの書き方
var a=function (){}
つまり、a を実行する方法は、a() です
同様に、保存はしません変数 a を介してそれを記述するので、
function(){}()
しかし、これは間違っていることがわかります
なぜなら、解析エンジンが解析するときに、それが関数が終了したと判断します
その関数をブロックとはみなしません
を実行するには、()を追加すると、関数ブロックが強制的にブロックとして認識されます
1.匿名とはfunction
Javascript で関数を定義するには、通常 3 つの方法があります: 関数キーワード (関数) ステートメント:
function fnMethodName(x){alert(x);}関数リテラル:
var fnMethodName = function(x){alert (x);}Function() コンストラクター:
var fnMethodName = new Function('x','alert(x);') 上記 3 つのメソッドは、同じメソッド function fnMethodName。最初のメソッドが最も一般的に使用されます。後の 2 つのメソッドは関数を変数 fnMethodName にコピーします。この関数には名前がありません。つまり、匿名関数です。実際、かなりの数の言語に匿名関数があります。
2. 関数リテラルと Function() コンストラクターの違い
関数リテラルは匿名関数ですが、構文では任意の関数名を指定できます。再帰関数を作成するときにそれ自体を呼び出すことはできますが、Function() コンストラクターを使用することはできません。
var f = function fat(x) { if (x else return x*fact(x-1);
};
Function( ) コンストラクターを使用すると、実行時に Javascript コードを動的に作成およびコンパイルできます。この点では、グローバル関数 eval() に似ています。
Function() コンストラクターは関数本体を解析し、実行されるたびに新しい関数オブジェクトを作成します。したがって、ループ内で Function() コンストラクターを呼び出したり、頻繁に実行される関数を呼び出したりする効率は非常に低くなります。対照的に、関数リテラルは、検出されるたびに再コンパイルされません。
Function() コンストラクターを使用して関数を作成すると、その関数は常にトップレベル関数として実行されます。
var y = "global" ;
functionconstructFunction() {
var y = "local";
return new Function("return y") // ローカル変数を取得できません}
alert(constructFunction()(); ); // 出力 "グローバル" 関数リテラル:
何も追加せずに function で始まる場合、スクリプト ホストは関数が式構文である限りリテラル関数であるとみなします。宣言、四則演算などの式に関数を書き込むと、ホストは次のようにそれを直接の量としても扱います:
var a = 10 function(){
return 5
}(); >
少し誇張して次のようにします: