JSにおける関数の重要性

php中世界最好的语言
リリース: 2018-03-19 16:26:42
オリジナル
2956 人が閲覧しました

今回は、JSにおける関数の重要性と、JSで関数を使用する際の注意点について、実際の事例を交えて見ていきましょう。

それはオブジェクトなので、次のことができます:

  1. リテラルを介して作成

  2. 変数、配列要素、プロパティ(プロパティ)に代入する

  3. はパラメータとして関数に渡されます

  4. 関数の戻り値として

  5. の関数に加えて、動的に作成および割り当てることができるプロパティが含まれています

オブジェクト上では、他のオブジェクトとは異なる関数を呼び出すことができます。

JSには変数のホイストがあります。変数が var で宣言されると、その変数は直ちに現在のスコープの先頭に昇格されます (let と const で宣言された変数はそうではありません)。例:

1 function a() {2     console.log(b);3     var b = 10;4 }5 a();  //undefined
ログイン後にコピー

上記のコードの実行結果は未定義です。その理由は、変数 b が var を通じて宣言されると、変数の昇格が発生し、すぐに現在のスコープの先頭に昇格されるためです (昇格は宣言の直後、b がまだ定義されていないときに行われることに注意してください!) 、この時点での「現在のスコープ」は関数 a のスコープです。したがって、上記のコードは実際には次のようになります:

1 function a() {2     var b;  //变量的声明被提升至当前作用域顶部3     console.log(b);4     b = 10;5 }6 a();
ログイン後にコピー

変数 b の宣言が 2 行目に昇格され (宣言のみが昇格されます)、この時点では b には値が代入されていないため、コードは継続します。コンソールの3行目に実行すると、log(b)とunknownが出力されます。

JSには変数プロモーションの他に「関数プロモーション」もあります。同様に機能も昇格しますが、機能は宣言された昇格だけではなく「全体の昇格」となります。以下のコードを見てください:

1 function a() {2     b();3     function b() {4         console.log("yes!");5     }6 }7 a();  //yes!
ログイン後にコピー

この時点で、関数 b は正常に実行できます。これはまさに、関数がプロモートされ、「全体的にプロモートされている」ため、 b() は正常に実行できます。このコードは実際には次と同等です:

1 function a() {2     function b() {3         console.log("yes!");4     }5     b();6 }7 a();  //yes!
ログイン後にコピー

通常の形式で宣言された関数のみがプロモートできることに注意してください。 例:

1 function a() {2     b();3     var b = function() {        //字面量声明的函数4         console.log("yes!");5     }6 }7 a();  //报错
ログイン後にコピー

ここでの匿名関数はリテラルを通じて宣言されているため、関数の昇格はなく、エラーが報告されます。

しかし、変数と関数が同時に宣言された場合、どちらが優先されるのでしょうか?

JS において、関数が「第一級市民」と呼ばれる理由の 1 つは、関数が変数と比較して 優先度 を持っているためです。昇格が発生すると、その関数はスコープの最上位に昇格します。例:

1 function a() {2     var b = 10;3     function b () {4         console.log("yes!");5     }6     console.log(b);7     console.log(typeof b);8 }9 a();    //10  number
ログイン後にコピー

このコードでは、変数 b の宣言がホイストされていますが、「第一級市民」である関数は変数 b の宣言の上にホイストされています。コードの実行段階で b に 10 が割り当てられるため、出力結果は b が 10 で、型は number になります。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨書籍:

WeChat ミニ プログラムで双方向データ バインディングを実装する方法

JavaScript に最適化された DOM Webpack モジュールの使用方法

以上がJSにおける関数の重要性の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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