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);