javascript関数宣言と関数表現の違い:関数宣言の向上
4477 ワード
1、関数を定義する方法は2つあります.関数宣言と関数式、対応文法:
:function funName(){}
:var funName = function(){}
2、上記の2つの方法は、定義された文法の違い以外に、最も主要な違いは、関数宣言が「関数宣言の向上」という特徴を持っていて、関数宣言を作用ドメインのトップに引き上げます.コードを実行する前に関数宣言を読み取ります.つまり、関数宣言を関数呼び出しの後に置くことができます.以下は例を通して説明します. 1:
test();// hello, 【 】 , ,
function test(){
alert("hello");
}
2:
test();// :Uncaught ReferenceError: test is not defined
// 【 】 , ,
//
var test = function(){
alert("hello");
}
test();// hello
3:
if(condition){
function test(){
alert("hello");
}
}else{
function test(){
alert("world");
}
}
// world, , ,
// ,
test();
if(condition){
var test2 = function(){
alert("hello");
}
}else{
var test2 = function(){
alert("world");
}
}
// ,
test2();
4:
//
var test = function(){
alert("hello");
}
//
test();
//
var s = "world";
//
function test(){
alert(s);
}
//
test();
: hello, , , test test, hello
3、もう一つの関数の方式があります.自己実行関数は、機能領域の向上の特徴を持っていません.作用領域の読み取り関数もコードの実行順に読み取ります.文法と例は以下の通りです. // , ,
(function(){
alert(s);// undefined, , s
})();
var s = "hello";