ホームページ  >  記事  >  ウェブフロントエンド  >  javascript_javascript スキルで関数を定義するための関数ステートメントと式の使用の違いの詳細な説明

javascript_javascript スキルで関数を定義するための関数ステートメントと式の使用の違いの詳細な説明

WBOY
WBOYオリジナル
2016-05-16 17:05:281111ブラウズ

私は長年 JavaScript を使用して数え切れないほどの関数を作成してきましたが、今日、この 2 つの関数定義の違いを本当に理解しました。自分自身に良い基礎を築くためにこのエッセイを書きました。理解するには古すぎます。

通常、関数を定義するには次の 2 つの方法があります:

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

// 関数ステートメント
function fn(str)
{
console.log(str);
};

//式定義
var fnx=function(str)
{
console.log(str ' from fnx');
};


In以前は、指の感覚に基づいてこの 2 つを自由に使用していました -_- || 今日、js の基本を読んだ後、これらについての混乱がついに解決されました。。

どちらのメソッドも新しい関数オブジェクトを作成しますが、関数宣言ステートメント内の関数名は変数名であり、var を介して変数を宣言するのと同じように、変数は関数オブジェクトを指します。関数定義ステートメント内の関数は明示的に拡張されます。スクリプトまたは関数の先頭に追加されるため、スクリプト全体および関数内で参照できますが、var 式を使用して関数を定義すると、変数宣言のみが前方に移動され、変数初期化コードは元の場所に残ります。 function ステートメントで作成された関数、関数名、関数本体が先頭に追加されるため、宣言する前に関数を使用できます。

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

コードをコピーします コードは次のとおりです。

console.log(typeof(fn)); // function
fn('abc'); // abc


console.log(typeof(fnx)) // 未定義

if(fnx)
fnx('abc'); // 実行されません
else
console.log('fnx は未定義です') // fnx は未定義です

// 関数ステートメント
function fn(str)
{
console.log(str);
};

// 式の定義
var fnx=function(str)
{
console.log(str ' from fnx');
};


コードは非常にシンプルです。私のように、これまで 2 つの違いを理解していなかった学生にも何かを得ることができれば幸いです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。