ホームページ  >  記事  >  ウェブフロントエンド  >  jsの複数変数定義(オブジェクトリテラル、配列リテラル、関数リテラル)_javascriptスキル

jsの複数変数定義(オブジェクトリテラル、配列リテラル、関数リテラル)_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 18:26:27993ブラウズ
オブジェクト リテラルはオブジェクトを作成します:
コードをコピー コードは次のとおりです:
var obj = {x:[1,2],y:23};

コードは以下と同じです。
コードをコピー コードは次のとおりです。

var obj=new Object( );
obj.x=新しい配列(1,2);


テスト:
コードをコピーします コードは次のとおりです。
for(var i in obj) alter(obj[i]); 🎜>


関数リテラル: これはステートメントではなく式です。

コードをコピー コードは次のとおりです: (function(){})()
次の例:


コードをコピーします コードは次のとおりです:
(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
}(); >

少し誇張して次のようにします:


コードをコピー コードは次のとおりです:

(function(){
alert(1);
} ) ( );
( function(){
alert(2);
} ( ) ) ;
void function(){
alert(3);
0, function(){
alert(4); -関数(){
アラート(5);
}();
関数(){
アラート(6);
!関数();
alert(7);
}();
~function(){
alert(8);
alert (9);
}();


js で関数を定義する方法は数多くあり、関数リテラルもその 1 つです。たとえば、var fun = function(){} の場合、function が fun に割り当てられていない場合、それは匿名関数になります。



それでは、匿名関数がどのように呼び出されるかを見てみましょう。

1. 実行後に値を返す関数呼び出し




コードをコピーします

}(3,4)); を実行します。 >/ /方法 2: 関数を呼び出して戻り値を取得します。関数を強制的に直接実行してから参照を返します。その参照は呼び出されて実行されます。
(function(x,y){
alert(xy);
return x y;
})( 3,4) ;


2. 実行後の戻り値を無視します




コードをコピーします

//メソッド 3、関数を呼び出し、戻り値を無視します。
void function(x) { コードをコピーします


コードは次のとおりです。


//メソッドの呼び出しが間違っています
function(x,y){
alert(x y)
}(3,4);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。