==示例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 里面,如果放到里面去了,尽量在代码的下面调用 。函数调用要在定义下面。如果放到函数定义上面,要在前面声明一下。