1.函數內(函數內的函數除外,嵌套的函數訪問不到),
定義的變量在整個函數內部都有效
function test() {
var t = 0;
//在for的條件裏定義變量,這個變更的作用域鏈對象是這個函數
//因此在整個的函數裏它是有效的
for (var i = 0; i < 5; i++) {
// 默認是全局變量,當 i 等於5時候條件不滿足;
t += i;
}
alert(i);
}
// test();
window.onload = test;
2.if和 for 不算塊級作用域,外部可以訪問裏面的變量;
function纔是塊級作用域,不能直接訪問裏面的變量
if (true) {
//在塊中定義了一個變量,它的作用域鏈的第一個對象就是全局對象window
var bbb = 0;
}
//tmp的作用域鏈的第一個對象就是全局對象window,而上面又有全局對象中相關的var語句,因此輸出0,就是直接獲取的值
alert(bbb);