javaScript関数定義方法:関数式と関数宣言。この記事では、関数式を使用するタイミング、機能宣言をいつ使用するかを説明し、2つの違いを説明します。
頻度宣言は長い間広く使用されてきましたが、関数式は徐々に支配されています。多くの開発者は、最終的に間違った選択につながるものをいつ使用するか確信が持てません。
関数式と関数宣言にはいくつかの重要な違いがあります。これらの違いと、コードで関数式と関数宣言をいつ使用するかを詳しく見てみましょう。
function funcDeclaration() { return '函数声明'; } let funcExpression = function () { return '函数表达式'; }
関数宣言が実行されます。 function
キーワードを書いた後、関数名に従って、関数の名前を宣言します。たとえば、
function myFunction() { // 执行某些操作 };
ご覧のとおり、関数を作成するときに関数名(myFunction
)を宣言します。これは、関数を定義する前に呼び出すことができることを意味します。
これは関数宣言の例です:
function add(a, b) { return a + b; };
関数式が実行されます。関数は匿名であるため、名前がありません。たとえば、
let myFunction = function() { // 执行某些操作 };
ご覧のとおり、関数はmyFunction
変数に割り当てられます。これは、関数を呼び出す前に定義する必要があることを意味します。
これは関数式の例です:
let add = function (a, b) { return a + b; };
関数式と関数宣言にはいくつかの重要な違いがあります:
let
ステートメントと同様に、関数宣言は他のコードの上部に宣伝されます。
関数式は促進されません。これにより、定義されている範囲から取られたローカル変数のコピーを保持できます。
通常、関数宣言と関数式を同じ意味で使用できます。ただし、関数式が、一時的な関数名を必要とせずに、理解しやすいコードにつながる場合があります。
では、関数式をいつ使用する必要があり、いつ機能宣言を使用する必要がありますか?
答えはあなたのニーズに依存します。より柔軟な関数または宣伝されない関数が必要な場合、関数式が最良の選択です。より読みやすく理解しやすい機能が必要な場合は、関数宣言を使用します。
ご覧のとおり、2つの構文は似ています。最も明らかな違いは、関数式が匿名であり、関数宣言が有名であることです。
今日、関数式ができないことをする必要がある場合、機能宣言が通常使用されます。関数宣言でのみ実行できる操作を実行する必要がない場合は、通常、関数式を使用する方が良いです。
再帰関数を作成する必要がある場合、またはそれを定義する前に関数を呼び出す必要がある場合は、関数宣言を使用します。経験則として、両方を実行する必要がない場合は、関数式を使用してクリーナーコードを書き込みます。
関数宣言を使用することにはいくつかの重要な利点があります。
関数式にはいくつかの利点があります。
ほとんどの場合、関数を定義する方法がニーズに最適な方法を簡単に判断するのは簡単です。これらのガイドラインは、ほとんどの場合、迅速に決定を下すのに役立ちます。
以下の場合に関数宣言を使用してください:
以下の場合に関数式を使用します。
つまり、多くの場合、関数表現の柔軟性が強力な利点になります。
機能宣言よりも式を機能させるには多くの方法があります。
閉鎖を使用できます。ノデリストをループするとき、この利益がどのように利益をもたらすかの良い例です。
閉鎖により、関数が実行された後に情報が利用できない場合、インデックスなどの追加情報を保持できます。
function funcDeclaration() { return '函数声明'; } let funcExpression = function () { return '函数表达式'; }
追加のイベントハンドラーは(ループが終了した後)後で実行されるため、for
ループの適切な値を維持するために閉鎖が必要です。
function myFunction() { // 执行某些操作 };
for
ループからdoSomething()
関数を抽出することで問題が発生する理由を理解する方が簡単です。
function add(a, b) { return a + b; };
ここでの解決策は、インデックスを関数パラメーターとして外部関数に渡すことで、値を内部関数に渡すことができます。通常、ハンドラー関数を使用して内部リターン関数を整理するために必要な情報が表示されます。
let myFunction = function() { // 执行某些操作 };
パッケージの閉鎖とその使用について詳しく知ります。
関数式は、中間の一時変数に値を割り当てる必要なく、関数に直接渡すことができます。
匿名関数の形で最も頻繁に表示されます。これがjQuery関数式の馴染みのある例です:
let add = function (a, b) { return a + b; };
関数式は、forEach()
などのメソッドを使用するときに配列アイテムを処理するためにも使用されます。
function tabsHandler(index) { return function tabClickEvent(evt) { // 对选项卡执行操作。 // 可以从此处访问 index 变量。 }; } let tabs = document.querySelectorAll('.tab'), i; for (i = 0; i < tabs.length; i += 1) { tabs[i].onclick = tabsHandler(i); }
ITのすべてのプロパティは、匿名関数の範囲内にあります。これは、他の場所のコードから予期しないまたは望ましくない副作用を防ぐための一般的なパターンです。
モジュールモードとしても使用され、簡単にメンテナンスされたセクションにコードブロックを含めることができます。 JavaScriptの閉鎖、コールバック、およびIIFEの謎を明らかにする際に、これらをより詳細に調査します。
これは、iife:
の簡単な例です
function funcDeclaration() { return '函数声明'; } let funcExpression = function () { return '函数表达式'; }
…モジュールとして使用すると、コードを簡単に維持できます。
function myFunction() { // 执行某些操作 };
ご覧のとおり、関数式は関数宣言と根本的に違いはありませんが、多くの場合、よりクリーンで読みやすいコードを生成できます。
これらは広く使用されているため、すべての開発者ツールボックスの重要な部分になります。上記で言及しなかった興味深い方法で、コードで関数式を使用していますか?コメントで教えてください!
関数式と関数宣言(FAQ)関数式と関数宣言の主な違いは、JavaScriptエンジンがそれらを解釈する方法です。関数宣言は、コードが実行される前に解析されます。つまり、コードの後半で宣言された関数を呼び出すことができます。これは関数の持ち上げと呼ばれます。一方、関数式は宣伝されていないため、定義の前に呼び出すことはできません。
もちろん、それぞれの例があります:
関数宣言:
function add(a, b) { return a + b; };
関数式:
let myFunction = function() { // 执行某些操作 };
コード全体で使用される関数を作成する必要がある場合、通常はスコープの上部に宣伝されるため、関数宣言が使用されます。これは、コードで宣言する前に関数を呼び出すことができることを意味します。一方、関数式は、通常、1回または有限数のみを必要とする関数に使用されます。
はい、関数式に名前を付けることができます。これは、関数の名前がスタックトレースに表示されるため、デバッグに非常に役立ちます。例は次のとおりです。
let add = function (a, b) { return a + b; };
即時(iife)と呼ばれる関数式とは何ですか?
関数式と関数宣言を交換可能に使用できますか?
function tabsHandler(index) { return function tabClickEvent(evt) { // 对选项卡执行操作。 // 可以从此处访问 index 变量。 }; } let tabs = document.querySelectorAll('.tab'), i; for (i = 0; i < tabs.length; i += 1) { tabs[i].onclick = tabsHandler(i); }
関数式はいくつかの利点を提供します。それらは匿名であることができ、自己執行可能に設定することができます(すぐに関数式を呼び出す)、変数に割り当てられて渡すことができます。これにより、閉鎖およびコールバック関数として使用するのに非常に適した関数式が非常に適しています。
一般に、関数式と関数宣言のパフォーマンスの違いは無視でき、JavaScriptコードのパフォーマンスに影響を与える可能性は低いです。関数の表現と関数宣言の選択は、特定のユースケースとコーディングスタイルの好みに基づいている必要があります。
はい、関数式はJavaScriptに閉鎖を作成するためによく使用されます。閉鎖とは、独自の範囲、外部関数の範囲、およびグローバル範囲にアクセスできる関数です。これは、関数式を使用して作成された閉鎖の例です。
以上が関数式と関数宣言を使用するタイミングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。