ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript関数定義の詳細分析_JavaScriptスキル

JavaScript関数定義の詳細分析_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 15:50:041013ブラウズ

関数

いくつかの重要なポイント:

a) 関数は JavaScript の第一級市民です (重要)
。 c). 関数は独立変数スコープ
を定義します。

定義方法

a) 名前付き関数:

名前付き関数は、別の関数内で定義されていない限り、グローバルです。

      // 全局的命名函数
  function add(x, y) {
    return x + y;
  }
  console.info(add(100, 200));  //300

b) 匿名関数:

匿名関数は通常、変数に割り当てられ、その変数を通じて呼び出されます。

    var func = function (x, y) {
      return x + y;
    }
    console.info(func(5, 2)); //7
匿名関数は、次のような「すぐに実行される匿名関数」の状況に適しています。

    console.info(
      function (x, y) {
            return x + y;
          }(100, 200)  //立即调用
        );
C) 定義方法はコード実行効果に影響します

名前付き関数は最初に使用してから定義できます

    console.info(sum(10, 10));
    function sum(num1, num2) {
      return num1 + num2;
    }

を使用する前に、まず匿名関数を定義する必要があります

    //console.info(sumFunc(10, 10));  //Uncaught TypeError: Property 'sumFunc' of object [object Object] is not a function 
    var sumFunc = function (num1, num2) {
      return num1 + num2;
    };
    console.info(sumFunc(10, 10));


関数の戻り値:

return を使用して戻り値を生成します。 return がない場合、関数は未定義を返します。

 function func() {
 }
 console.info(func()); //undefined
 function func2() {
   return; //空的返回语句
 }
 console.info(func2()); //undefined

リターンに隠された穴:

 var func = function (x, y) {
   var sum = x + y;
   return {
     value : sum
   }
 }

このように書いても問題ありません: func(5,5) を呼び出すと Object {value: 10} が返されます

ただし:

  var func = function (x, y) {
    var sum = x + y;
    return
    {
      value: sum
    };
  }
  console.info(func(5,5)); //undefined

return の後に復帰と改行が続く場合、

func(5,5) を呼び出すと、未定義
が表示されます エディターは return の後にセミコロンを追加しましたが、この場合は役に立ちません。

関数はオブジェクトです:

  function add(x, y) {
    return x + y;
  }
  console.info(add(100, 200)); //300
  var other = add; //other和add引用同一函数对象
  console.info(other(300, 400)); //700
  console.info(typeof other);  //function
  console.info(add === other); //true

ネストされた定義関数:

関数内で別の関数を定義できます。

  function outerFunc(a, b) {
    function innerFunc(x) {
      return x * x;
    }
    return Math.sqrt(innerFunc(a) + innerFunc(b));
  }
  console.info(outerFunc(3, 4)); //5

外部変数へのアクセス:

内部関数は外部変数とパラメーターにアクセスできます。

 var globalStr = 'globalStr';
 function outerFunc2(argu) {
   var localVar = 100;
   function innerFunc2() {
     localVar++;
     console.info(argu + ":" + localVar + ":" + globalStr);
   }
   innerFunc2(); //hello:101:globalStr
 }
 outerFunc2("hello");

関数を返す関数:

関数はオブジェクトであるため、戻り値として使用できます。

  function outerFunc(x) {
    var y = 100;
    return function innerFunc() {
      console.info(x + y);
    }
  }
  outerFunc(10)(); //110
以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。

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