javascriptは関数文と表現で関数を定義します.

1281 ワード

javascriptを使って長年、無数の関数を書きましたが、今日は本当に二つの関数の定義の違いが分かります.本当に悲劇です.この随筆を書いて、いつも自分に基礎を作るように注意します.
通常、関数を定義する2つの方法が見られます.
 
  
//
function fn(str)
{
  console.log(str);
};

//
var fnx=function(str)
{
  console.log(str+ ' from fnx');
};

以前は自分の指の感覚で好きなように使っていました.今日はjsの基礎を見て、やっと心の中の彼らに対する困惑を解決しました.
両方の方法で新しい関数オブジェクトを作成しましたが、関数宣言文の関数名は変数名、変数指向関数オブジェクト、およびvar宣言変数と同じように、関数定義文の関数はスクリプトまたは関数の上部に表示されています.したがって、スクリプト全体と関数内では見えますが、var表現を使って関数を定義します.変数宣言が先行しているだけで、変数初期化コードは元の位置にあります.関数文で作成した関数は、関数名と関数体が前倒しされています.だから、それを宣言する前に使用することができます.
コードの例は以下の通りです
 
  
   console.log(typeof(fn)); // function
    fn('abc'); // abc


    console.log(typeof(fnx)); // undefined

    if(fnx)
        fnx('abc');  // will not execute
    else
        console.log('fnx is undefined'); // fnx is undefined

    //
    function fn(str)
    {
        console.log(str);
    };

    //
    var fnx=function(str)
    {
        console.log(str+ ' from fnx');
    };

コードは簡単です.私と同じように、両者の違いをはっきりさせていない学生が何かを得ることができると思います.