==示例1==
alert(a); //
undefined
var a = 1;
alert(a); // 1
function fn1(){ alert(123); } //未调用
==示例2==
alert(fn1); // function
fn1(){ alert(1);
}
function fn1(){ alert(1); } //
解析时函数名和变量重名,留下函数,因为变量是未定义,而函数是解析的整体
var fn1 = 2;
alert(fn1); // 2
fn1(); // 报错
// 你看到的代码,不是解析器看到的代码!!!
==示例3==
alert(a); // function
a(){ alert(3);
}
var a = 1;
function a(){ alert(2); }
alert(a); // 1
function a(){ alert(3); }
alert(a); // 1
==示例4==
alert(a); // function
a(){ alert(4); }
var a = function(){ alert(1); };
alert(a); //
function(){ alert(1); };
function a(){ alert(2); }
alert(a); //
function(){ alert(1); };
var a = function(){ alert(3); };
alert(a); //
function(){ alert(3); };
function a(){ alert(4); }
alert(a); //
function(){ alert(3); };
==示例5==
var a = 1;
function fn1(){
alert(a); //
undefined var a =
2;
}
fn1();
alert(a); // 1
==示例6==
var a =
1;
//全局变量
function fn1(){
alert(a); // 1 a = 2;
}
fn1();
alert(a); // 2
==示例7==
var a = 1;
function fn1(a){
alert(a); // 1 a = 2;
}
fn1(a);
alert(a); // 1
==示例8==
alert(i);
//undefined
fn1(); //
谷歌可以预解析fn1;FF版本不可以,浏览器报错, fn1 is not defined
if(true){ var i =
0; function
fn1(){
alert(1); //
chrome: 1 }
}
alert(i);
// chrome: 0
fn1();
// chrome: 1
// 函数定义尽量不要放到 if for 里面,如果放到里面去了,尽量在代码的下面调用
。函数调用要在定义下面。如果放到函数定义上面,要在前面声明一下。