ホームページ > ウェブフロントエンド > jsチュートリアル > JSの2つの定義方法の違いと内部原理_基礎知識

JSの2つの定義方法の違いと内部原理_基礎知識

WBOY
リリース: 2016-05-16 17:13:19
オリジナル
1147 人が閲覧しました

誰もが両方の方法を使用したことがあると思いますが、誰もがその違いと内部原理を知っているわけではありません。

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

// メソッド 1
function func1 (x, y){
// コード
}
// メソッド 2
var func2 = function(x,y){
// コード
}

方法 1 は、典型的な関数宣言 (関数宣言) です。
方法 2 は関数式で、無名関数を変数に代入します。つまり、方法 2 では、仮パラメータ x および y を使用して無名関数を作成し、その無名関数を変数 func2 に割り当てます。

主な違いは次のとおりです。
1、関数宣言は指定された関数名を表示する必要があります。ここでは func1 です。関数式は匿名関数を使用します。
2、メソッド 1 はコードの前にあります。実行 (解釈期間) はスコープにロードされ、メソッド 2 はコードの実行 (ランタイム) 時にロードされる必要があります

簡単な例は、その使用方法の違いを理解するのに役立ちます
コードをコピーしますalert(func1) // --> >alert(func2); // --> 未定義
// メソッド 1
function func1(x,y){
// コード
}
// メソッド 2
var func2 = function(x ,y){
// コード
}


ご覧のとおり、最初は func1 のソース コードが表示されますが、 2回目は未定義です。つまり、メソッド 1 (関数宣言) を使用して関数を定義する場合、それを関数コードの先頭で使用できます。メソッド 2 (関数式) を使用して関数を定義する場合、その関数を定義の前に使用することはできません。ただし、定義後にのみ使用できます。

内部的には、実行コンテキスト (Execution context) とアクティベーション オブジェクト (Activation object) が関係します。さらに詳しく知りたい場合は、EcmaScript 5 のドキュメントを参照してください。

最近、メソッド 2 を使用して関数を定義することを好む人が増えていることに気付きました (特に入れ子関数の場合)。たとえば、単純に関数を定義するのは依然として慣習的な方法 1 です。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート