JavaScriptの関数宣言と関数式

PHPz
リリース: 2018-10-12 15:23:26
オリジナル
1391 人が閲覧しました

これまでのところ、関数宣言と関数式を区別していません。実際、パーサーは、データを実行環境にロードするときに、関数宣言と関数式を同等に扱いません。パーサーは、コードを実行する前に、まず関数宣言を読み取り、使用可能 (アクセス可能) にします。関数式については、パーサーがそれが配置されているコード行に到達するまで、実際には解釈され実行されません。次の例:

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

alert(sum(10,10));
function sum(num1,num2)
{
    return num1+num2;
}
ログイン後にコピー

コードが開始される前であるため、上記のコードは正しく実行できます。実行時には、パーサーの関数宣言が読み取られ、関数宣言ホイスティングと呼ばれるプロセスを通じて実行環境に追加されます。コードを評価するとき、JavaScript エンジンは最初のパスで関数を宣言し、ソース ツリーの最上部に配置します。したがって、関数を宣言するコードがそれを呼び出すコードの後ろにある場合でも、JavaScript エンジンは関数宣言を先頭に引き上げることができます。以下の例のように、上記の関数宣言を等価な関数式に変更すると、実行時にエラーが発生します。

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

alert(sum(10,10));
var sum=function(num1,num2)
{
    return num1+num2;
};
ログイン後にコピー

関数が配置されているため、上記のコードは実行時にエラーが発生します。関数宣言ではなく、初期化ステートメント内で。言い換えれば、変数 sum は、関数が実行されるステートメントまで関数への参照を保持しません。さらに、コードの最初の行で「予期しない識別子」エラーが発生するため、実際には関数は実行されません。次の行。

宣言中に変数を介して関数にアクセスできるという事実を除けば、関数宣言と関数式の構文は実際には同等です。 。 の。

注: var sum=function sum(){} のように、関数宣言と関数式を同時に呼び出すこともできます。ただし、この構文は Safari でエラーを引き起こします。

以上がこの記事の全内容です。JavaScript を学習する皆さんのお役に立てれば幸いです。

その他の関連チュートリアルについては、JavaScript チュートリアル

をご覧ください。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート