JavaScript関数宣言と変数宣言を区別します.
879 ワード
今日はまた問題が発生しました.私はJSとの基礎的な勝負を始めました.
「えっと、変数が上がるんですか?」という答えがありましたが、最初の理解は変数が上がっても、最初の場合はこうなるべきです.
しかし、var声明だけが前もって、function fn(){}という形式で宣言した関数は、作用域の最上部に引き上げられ、また変数の向上につながるということです.具体的には次の例を見てください.
var getName = function(){alert(1)};
function getName(){alert(2)};
getName();// 1
or
function getName(){alert(2)};
var getName = function(){alert(1)};
getName();// 1
なぜ私は声明の順序を変えましたか?それともvar形式で宣言した関数の値を出力しますか?「えっと、変数が上がるんですか?」という答えがありましたが、最初の理解は変数が上がっても、最初の場合はこうなるべきです.
var getName;
getName = function(){alert(1)};
function getName(){alert(2)};
最後に2を出力するべきですね.しかし、var声明だけが前もって、function fn(){}という形式で宣言した関数は、作用域の最上部に引き上げられ、また変数の向上につながるということです.具体的には次の例を見てください.
fn();//Uncaught TypeError: fn is not a function
var fn = function(){console.log(1)};
but
fn();//2
var fn = function(){console.log(1)};
function fn(){console.log(2)}
関数アップのより凶を説明するに十分です.