javascript作用域是由最裏層向外層查找直到window,如果到達window還沒查找到則爲undefined.下面看幾個例子:
eg1:
var a = 1;
function t1(){
var b = 2;
function t2(){
var c =3;
alert(a+b+c);
}
t2();
}
t1();// 6
/*
分析:
t2函數內找不到a、b則向上t1函數裏面找,t1裏面找到b,繼續向window中尋找a
*/
eg2:
function t1(){
console.log(str1);// global
console.log(str2);// 報錯 str2 is not defined
str2 = 'local';
}
t1();
eg3:
var str1 = 'global';
function t1(){
console.log(str1);// global
console.log(str2);// undefined
var str2 = 'local';
}
t1();
eg2和eg3的結果僅僅作用域是解釋不了的,還需要詞法分析,請看javascript詞法分析