javascript_javascript スキルの匿名関数を使用して、いくつかのシンプルで興味深いコード部分を分析します。
May 16, 2016 pm 06:24 PM
javascript
無名関数
1. カプセル化呼び出しの単純な形式
コードをコピー コードは次のとおりです:
var userName = function( ) { return "jeff wong" } ();
alert(userName);
上記のコードは、次のように徐々に分解できます。書き込み:
コードをコピー コードは次のとおりです。
var anonymousFunc = function() { return "jeff wong" }; // 匿名関数
var name = anonymousFunc(); // この関数を実行して人の名前を返します
コードをコピーします コードは次のとおりです:
var a = new Object();
var b = new Function();
//alert(typeof (a)); //object
//alert( b)); //関数
alert(a); //[オブジェクト オブジェクト]
alert(b); //匿名関数
//alert(a == b); 🎜>//alert(a === b); //false
ご覧のとおり、変数 a がポップアップします。 ] と新しい関数 (大文字の関数であることに注意してください)、b が表示されると、匿名関数が生成されます。 b は匿名関数であるため、関数はもちろん実行できます。次のコードを試して推測を検証します。var b = new Function();
//alert(typeof (a)); //object
//alert( b)); //関数
alert(a); //[オブジェクト オブジェクト]
alert(b); //匿名関数
//alert(a == b); 🎜>//alert(a === b); //false
コードをコピー コードは次のとおりです: alert(b()); //未定義
alert(a()); //スクリプト エラー プロンプト「関数が見つかりません」3. 新しい関数は違いを生むことができます (小文字関数)
コードをコピーします コードは次のとおりです。 var func = new function() { }
alert(typeof (func)); alert(func); //[object Object]
//alert(func()); //スクリプト エラー func は関数ではありません
実際、上記のコードは次の記述メソッドと同等です:
//alert(func()); //スクリプト エラー func は関数ではありません
実際、上記のコードは次の記述メソッドと同等です:
コードをコピー コードは次のとおりです: function anonymousClass() { } //匿名クラス
var instance = new anonymousClass(); alert(typeof (instance));//object
alert(instance); [object Object]
[code]
(2) この関数には、
[code]
var func = new という戻り値があります。 function() { return "ジェフ ウォン" };
alert( typeof (func))
//alert(func()); >
実際、上記のコードは次の記述と同等です:
alert(instance); [object Object]
[code]
(2) この関数には、
[code]
var func = new という戻り値があります。 function() { return "ジェフ ウォン" };
alert( typeof (func))
//alert(func()); >
実際、上記のコードは次の記述と同等です:
コードをコピー
コードは次のとおりです。 function anonymousClass () { return "jeff wong" } //Anonymous classvar instance = new anonymousClass(); (typeof (instance));//object alert(instance); //[ object Object]
(3)、関数には戻り値がまだあります。メソッドが少し異なります
次のコードと (2) の違いに注意してください。次に注目したいのは、少し異なる記述形式であるためです。
コードをコピー
コードは次のとおりです: var func = new function() { return new String("jeff wong") ; }; alert(typeof (func)); // オブジェクトが必要です //alert(func()); 🎜>
上記のコードと同等の形式は依然として単純です:
コードをコピー
コードは次のとおりです。
function anonymousClass() { return new String("jeff wong") } var instance = new anonymousClass(); alert(typeof)インスタンス));アラート(インスタンス)
実行して結果を見ましたか?そうです、3 番目の書き方では、func またはインスタンスをポップアップすると、予期せず「jeff wong」という文字列が得られます。 (2)と(3)のコードをよく比較すると、returnの書き方が少し違う以外はほぼ同じなので、関数を作っているのはnew Stringの形式であることは間違いないと推測します。予期せぬ効果を生み出します。 なぜこのようなことが起こっているのでしょうか?
JavaScript では、新しい式の後のコンストラクターがプリミティブ型を返す (return) 限り、(リターンがない場合は、実際には (1) などの未定義のプリミティブ型を返します) ことがわかります。 (2) メソッドの書き込みの場合、new によって作成された匿名オブジェクトが返され、new 式の後のコンストラクターがオブジェクト (Object)、関数 (function)、配列 (Array) などの参照オブジェクトを返します。 ) などの場合、返される参照オブジェクトは、new によって作成された匿名オブジェクトを上書きします。ここで、(3) の記述を分析してみましょう。 new String は文字列参照オブジェクトを構築するため、new によって作成された匿名オブジェクトが対象となり、new String が指す参照値は「jeff wong」であるため、ポップアップは次のようになります。現在の新しい文字列によって割り当てられる値です。
最後に、次のコードが何を返すかを見てみましょう:
コードをコピー コードは次のとおりです:
var func = new function() { var str = new String("jeff wong") };//別の方法で記述します
//alert(typeof (func)); //オブジェクトは期待されています
alert(func); //ここでの結果はどうなるでしょうか?
著者: ジェフ・ウォン
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7281
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1341
46


Laravel チュートリアル
1258
25


PHP チュートリアル
1205
29



簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法

JavaScript で HTTP ステータス コードを簡単に取得する方法
