ホームページ  >  記事  >  ウェブフロントエンド  >  JS関数の詳細な分析

JS関数の詳細な分析

php中世界最好的语言
php中世界最好的语言オリジナル
2018-03-08 15:31:101643ブラウズ

今回は、JS 関数の詳細な分析をお届けします。関数宣言と関数式の違いは何ですか? JS関数を使用する際の注意点は何ですか? 以下に実際のケースを見てみましょう。

関数宣言と関数式の違いは何ですか(*)

関数宣言: function bar() {}
関数式: var fuc = foo(){}
1. Function bar はプログラム全体の前に実行されます。はホイスト(巻き上げ)されるため、指定されたバー関数のスコープ全体で使用できます。関数定義前に呼び出しても問題ありません。
2. 関数宣言の場合、関数の名前は必須ですが、関数式の場合はオプションです。そのため、匿名関数式と名前付き関数式が表示されます。
3 この関数内

var foo = function bar() {
bar(); // Works};
bar(); // ReferenceError命名函数bar赋值给了变量foo,所以在函数声明外是不可见的,但在bar`函数内部仍然可以调用。这是因为Javascript对命名函数处理的机制,函数的名称永远在函数内部的作用域中有效。

変数宣言のプレフィックスは何ですか?関数宣言プレフィックス(**)とは

いわゆる変数宣言プレフィックスとは、スコープブロックでは、すべての変数がブロックの先頭で宣言されることを意味します。以下は 3 つのコードの例です:
コード 1:

var a = 1;
function main() {
console.log(a);//1
}
main();//输出1`

コード 2:

1 var a = 1;
2 function main() {
3  console.log(a);
4 var a = 2;
5 }
6 main()//输出undefined

コード 3: コード 2 はなぜ未定義を出力するのですか

1 var a = 1;
2 function main() {
3 var a;
4  console.log(a);
5 a = 2;
6 }

関数の宣言プレフィックスは、全体をプロモートすることです。関数を現在のスコープに追加します。先頭 (前の変数宣言の後)。

var num = 1;
console.log(doubleNum(num));//2
function doubleNum(num){ return num2;}


//函数的声明前置
var num;
function doubleNum(num){ return num2;}
num = 1;
console.log(doubleNum(num));//2

argumentsと同等です (*)

argumentsとは配列のようなオブジェクトです。関数に渡されるパラメータのリストを表します。関数のすべてのパラメータは、引数オブジェクトを使用して関数内で取得できます。このオブジェクトは、関数に渡される各引数のエントリを作成します。エントリのインデックスは 0 から始まります。

関数のオーバーロード(**)の実装方法

は、引数の長さとパラメータの型によって実装できます。例:

function sumOfSquares(a, b, c){
if(arguments.length<3){
c = 0;
}
return aa+bb+c*c
}
sumOfSquares(2,3,4);   // 29
sumOfSquares(1,3);   // 10

即時実行関数式とは何ですか?何をするのか (***)

関数の即時実行は通常、次の 2 つの方法で記述されます:
(function(){...})();
(function(){...}() );// 使用をお勧めします
Javascript では、括弧「()」のペアは、関数名の後に関数の呼び出しを示す演算子です。
参考 - JavaScriptの即時実行関数

関数のスコープチェーンとは(****)

スコープとは、変数と関数のアクセス可能な範囲であり、変数と関数の可視性とライフサイクルを制御します。 JavaScript の変数にはグローバル スコープとローカル スコープがあります。
スコープ チェーンとは、コードが環境内で実行されるときに、実行環境がアクセスできる変数や関数に順序よくアクセスできるようにするために、変数オブジェクトのスコープ チェーン (スコープ チェーン、sc とは呼ばれません) が作成されます。スコープ内の最初のオブジェクトは常に、現在実行中のコードが配置されている環境の変数オブジェクト (VO) です

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

関連書籍:

CSS3でログインボックスを作る方法

JavaScriptの配列-文字列-数学関数

JS Domとイベントの概要

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。