1. 通常の機能js 関数の作成は非常に特殊です。それを行う方法はたくさんあります。最も単純な方法は、C 言語のそれに似ています。
// 1. 関数定義 関数 printHello_1$_(name_0) { //実行 console.log("Hello World!" + name_0); } console.log(typeof printHello_1$_); // 2. 関数呼び出し 印刷Hello_1$_(); // 3. 関数の命名 // 4. 関数パラメータ // 5. 関数の戻り js は匿名関数もサポートしており、関数名を記述する必要はありません。 Python にも似たようなものがあり、Python 学習ノートにも記録されています。ラムダ匿名関数です。 // 6. 関数に名前を付けず、次のように直接作成することもできます。 彼に = function(){ console.log("彼"); } him() // これは、名前が実際には変数名であることを示しています。 // 8. 関数名自体は値の転送をサポートしていませんが、変数はサポートしています。 // him = printHello_1(); // エラー(配列を定義した後は値を割り当てることができないのと同様?) 彼を追加してみましょう。 追加(); // 7. この変数には他の内容を割り当てることもできます。 彼 = 6; console.log(him) // 数字6を出力 2. 矢印関数js の矢印関数は「真の」匿名関数であり、ネストされた関数本体をすばやく作成できます (私自身の言葉です)... また、Python のラムダ匿名関数の使用法ともより一致しています。
使い方は簡単そうです。先頭の括弧は使用されるパラメータで、コードは矢印に従います。 1行のシンプルなコードであれば括弧を書く必要もなく、1行でも暗黙的に計算された値を返します。 (偽)の場合 { const add = (a, b) => a + b; // 関数を直接作成し、それを変数に割り当てて呼び出すのと同様です。 console.log(add(1,3)); // 戻り値は書き込まれず、計算された値が暗黙的に返されます} (偽)の場合 { add = (a, b) => a + b とします。 console.log(add(1,3)); // 4 を出力 const add_0 = add; // 通常の変数代入に置き換えることができます add = 5; // 本質は依然として変数であることがわかります。定義で変数型を使用している場合は変更できます console.log(add); // 5 を出力 console.log(add_0(2, 4)); // 6 を出力 } (偽)の場合 { console.log(add_0(10, 4)); // const 変数型はスコープを越えることはできません} 改行が必要な場合は、中括弧を使用する必要があります。よく使われます。 (偽)の場合 { 定数を追加する = (a, b) => { a + b を返します。 } console.log(add(1,3)); // 戻り値があります。つまり、中括弧が使用されている場合は、改行を示すことができますが、暗黙的な戻りはありません。単一行には常に暗黙的な戻り値があります。 } 3. データパケットJSON
// 例1 (偽)の場合 { const book = new Object({title : "1984", author : "George Orwell"}) // JSON オブジェクトを作成 console.log("\n ---------") console.log(typeof book) // 型を確認すると、確かにオブジェクトであることがわかります console.log(book) // 正常に印刷できます} // 例 2 (次のセクションで詳しく説明、オブジェクトに関する知識ポイント) (偽)の場合 { const book = ({title : "1984", author : "George Orwell"}) // キーワード Object を追加しなくても、同じ効果が得られます。 console.log("\n ---------") console.log(書籍の種類) コンソール.log(ブック) } // 例3 (偽)の場合 { 定数ブック = [ {タイトル: "1984"、著者: "ジョージ・オーウェラ"}、 {タイトル: "1985", 著者: "ジョージ・オーウェル"}, {タイトル: "1986", 著者: "ジョージ・オーウェル"}, {タイトル:「1987」、著者:「ジョージ・オーウェル」} ] console.log("\n ---------") console.log(typeof book) // 印刷タイプは依然としてオブジェクトですが、実際は配列です console.log(book) }
(偽)の場合 { const book = ({title : "1984", author : "George Orwell"}) // キーワード Object を追加しなくても、同じ効果が得られます。 console.log("\n ---------") let bookJSON = JSON.stringify(book); // オブジェクトを元の形式のままにして文字列に変換します。キー名は文字列になります (つまり、二重引用符が追加されます)。テキストで保存するのに便利ですか? console.log(typeof bookJSON) // そういえば、以前ROSプロジェクトを書いたときに使ったパラメータファイルもJSONだったっけ? Baidu Feijiangのテキストファイルもこの形式だった。 コンソールログ(bookJSON) } /* 出力は次のようになります: --------- 弦 {"title":"1984","author":"ジョージ・オーウェル"} */ // キーの値は元の文字列のままですが、キー名は文字列に変更されていることがわかります。
(偽)の場合 { 定数ブック = ([1,23,3,"156"]) console.log("\n ---------") console.log(typeof book) // 型はまだオブジェクトです let bookJSON = JSON.stringify(book); // エラーなしで呼び出すことができます。 console.log(typeof bookJSON) // 結果は元の結果とまったく同じ文字列になります。 コンソールログ(bookJSON) } /* 出力は次のようになります: --------- 物体 弦 [1,23,3,"156"] */ // 関数が動作していないことがわかります。形式が JSON 要件を満たしていない場合は機能せず、エラーも報告されません。 js には、文字列データを JSON オブジェクトに変換するメソッド (偽)の場合 { data_0 = "[1,2,3]"とします。 let data = "{\"title\" : \"1984\", \"author\" : \"George Orwell\"}"; // JSON 文字列形式では、文字列のような形式を作成するために、キーと値の両方を二重引用符で囲む必要があることに注意してください。何か問題があれば変換は失敗します。 let parsed = JSON.parse(data); // 逆の操作で、文字列をオブジェクト型に戻します。フォーマットに準拠しているかどうかを解析します。 console.log("\n -----") console.log(解析済み); // console.log(解析されたtypeof) console.log(データの種類) } /* 出力は次のようになります: ----- { タイトル: '1984'、著者: 'ジョージ・オーウェル' } 物体 弦 */ // 文字列内のスラッシュはより厄介なことに注意してください
4. オブジェクトjs でのオブジェクトの作成は python のクラスとは異なりますが、オブジェクトを直接作成します。例を直接見て、詳しく説明します。 (偽)の場合 { data_0 = "[1,2,3]"とします。 let data = "{\"title\" : \"1984\", \"author\" : \"George Orwell\"}"; // JSON 文字列形式では、文字列のような形式を作成するために、キーと値の両方を二重引用符で囲む必要があることに注意してください。何か問題があれば変換は失敗します。 let parsed = JSON.parse(data); // 逆の操作で、文字列をオブジェクト型に戻します。フォーマットに準拠しているかどうかを解析します。 console.log("\n -----") console.log(解析済み); // console.log(解析されたtypeof) console.log(データの種類) } /* 出力は次のようになります: ----- { タイトル: '1984'、著者: 'ジョージ・オーウェル' } 物体 弦 */ // 文字列内のスラッシュはより厄介なことに注意してください 形式から、文字列や匿名関数を含む一連の属性のように感じられます。また、等号を使用する代わりに、辞書のキーペアと同様に、コロンを使用して値を割り当てます。
最初に直接値を割り当てるだけでなく、最初に空のオブジェクトを作成し、徐々に値を追加することもできます。プロパティがすでに存在する場合は上書きされ、そうでない場合は追加として扱われます。 (非常に単純で粗雑) // 2. コンストラクタを使用してオブジェクトを作成する別の方法 if (false) { 定数ブック = 新しいオブジェクト(); console.log(book); // 初期作成は空です console.log(typeof book); // 型はオブジェクトです 書籍のタイトル = "1984"; book.author = "ジョージ・オーウェル"; book.isAvailable = false; // 属性を追加 book.checkIn = function(){ this.isAvailable = true; // メソッドを追加 }; book.checkOut = 関数(){ this.isAvailable = false; }; console.log(book); // 通常どおり印刷 console.log(typeof book); // 3. オブジェクト内の要素にアクセスするためのメソッド: console.log(book.title); // 構造体に似たアクセス console.log(book["title"]); // 辞書に似たアクセス、出力結果は同じです。この方法でアクセスする場合、キー名は二重引用符で囲み、文字列として扱う必要があることに注意してください console.log(book.checkIn); // アクセス関数の場合、括弧が追加されていなければ、オブジェクトが返されます。類似の文字を印刷する: [関数 (匿名)] console.log(book.checkIn()); // 括弧を追加すると、呼び出し実行と同等になります。(関数には戻り値がないので戻り値は空です) console.log(book["checkIn"]); // 辞書形式でアクセスしても同じ結果になります。 console.log(book["checkIn"]()); // この括弧は角括弧の外側にあります。 }
(偽)の場合 { const bookObj = { // オブジェクトを作成する checkIn : function(){ // 属性を追加する return this; // この属性はメソッドであり、戻り値があり、オブジェクト自体を返します} } function anotherCheckIn(){ // 関数を作成する return this; // 関数自体を返す} console.log(bookObj.checkIn() == bookObj); // 戻り値はオブジェクト自体です。正解です console.log(bookObj.checkIn() == globalThis); // 戻り値は関数です。間違いです console.log(anotherCheckIn() == globalThis); // 戻り値は関数です。正解です } 5. 約束
// Promise オブジェクトは、非同期操作の最終的な完了 (または失敗) とその結果の値を表すために使用されます。 (真)の場合 { function promiseTimeout(ms){ // 関数を作成します return new Promise((resolve, reject) => { // Promise オブジェクトを返します。入力パラメータは匿名関数です。匿名関数には 2 つのパラメータがあり、1 つは成功時に実行されるコンテンツで、もう 1 つは失敗時に実行されるコンテンツです。 setTimeout(resolve, ms); // js 内部関数。最初のパラメータのコンテンツを実行する前に、2 番目のパラメータを ms 遅延します。 }); } promiseTimeout(2000) //関数を呼び出してパラメータ2000msを渡します。 .then(() => { // 返された Promise オブジェクトの組み込みメソッド。成功した場合は呼び出されます。この組み込みメソッドには、匿名関数であるパラメーターもあります。 console.log('Done!!'); // この匿名関数にはパラメーターがなく、内部関数は出力のみです。 return promiseTimeout(1000); // 関数を再度呼び出して、別の変数を返します。 }).then(() => { // 上記は別の変数を返すため、チェーンで呼び出すことができます。 console.log('Also done!!'); // 1000ms 遅延し、操作が成功したら return を呼び出します Promise.resolve(42); // 別のオブジェクト (無限の入れ子人形) を返します }).then((result_0) => { // パラメータを渡します。このパラメータの名前は任意ですが、変更した後でも効果を得ることができます。IDE は自動的にこれを赤でマークするため、これが文法上のキーワードではなく変数であることがわかります console.log(result_0); // パラメータを出力します }) .catch(() => { // 上記と同じですが、失敗した場合は console.log('Error!') を呼び出します。 }) // Promise.prototype.then メソッドと Promise.prototype.catch メソッドは Promise を返すため、連鎖させることができます。 } /* 実行結果は次のとおりです。 しばらく待ってから、次の行を印刷します。 終わり! しばらく待つと、2 行が同時に印刷されます。 これも完了! 42 */ 6. 非同期: 待機
// 非同期:待機 関数promiseTimeout(ms){ 新しい Promise を返します ((resolve, reject) => { setTimeout(解決、ミリ秒); }); } 非同期関数longRunningOperation(){ 42を返します。 } 非同期関数run() { console.log('開始!'); await promiseTimeout(2000); // await キーワードを追加すると、結果は同期操作と同様になります。本来、Promise を使用すると、最初に印刷が行われ、その後遅延が発生します。A/A を追加すると、最初に遅延が発生し、その後順番に印刷されます。 const 応答 = longRunningOperation() を待機します。 console.log(response); // 論理的には、42 を返して直接出力する必要があります。実際、await キーワードが追加されていない場合は、42 ではなく、Promise オブジェクトがすぐに返されます。 console.log('停止!!'); } 走る(); /* 実行結果は次のとおりです。 まず 1 行を印刷します: 始める! 少し待つと、2 行が同時に印刷されます。 42 停止! */ 7. パッケージnode.js に含まれる nvm ツールを使用すると、js ソフトウェア パッケージを適切に管理できます。また、プロジェクトには関連するソフトウェア パッケージのディレクトリを装備できます。対応するソフトウェア パッケージを追加し、プロジェクトの更新コマンドを入力してソフトウェア パッケージをプロジェクトに追加するだけです。
要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
1. オンラインテキストジェネレーターBlindTextGenerator: デザイナーにとって、こ...
ページドメインの関係:メインページ a.html はドメイン A: www.jb51.net に属し...
この記事では、jQueryブリージングカルーセル制作原理の具体的なプロセスを参考までに紹介します。具...
1. <dl>はリストを定義し、<dt>はリスト内の項目を定義し、<d...
目次1. ファイアウォールの現在の状態を確認する2. ファイアウォールサービスを開始する3. ファイ...
まずは効果を確認実装コード <div class="box box1"&g...
目次使用されるAPI簡単な例人.ts親コンポーネントサブコンポーネント効果要約する使用されるAPI ...
目次1. 原因2. デバイス情報3. 準備4. Apacheをインストールする5. gitを設定する...
この記事では、参考までに、Vue の具体的なコードを共有して、簡単なショッピングカートを実装します。...
今日はメニューボタンを作りました。マウスをボタンに移動するすると、ドロップダウンサブメニューが表示さ...
この記事の例では、WeChatアプレットで画像コントロールを選択するための具体的なコードを参考までに...
デフォルトでは、Flash は常にページのトップレベルに表示されます。つまり、ページに DHTML ...
さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!DOCTYPE htm...
1. HTMLタグは常に閉じる前のページのソース コードでは、次のような記述がよく見られます。 &l...
rm コマンドrm コマンドは、ファイルを削除するときによく使用されるコマンドです。ファイルまたはデ...