描述
这是分别使用 var let const 声明的变量,最后并通过断点查看
debugger // 断点1
var a = 1
debugger // 断点2
let b = 2
debugger // 断点3
const c = 3
debugger // 断点4
断点1
断点2
断点3
断点4
other
let alert = function(args) {
console.log(args);
}
let f = 111
alert(222222) // 222222 没有访问到 window 上的alert
window.alert('hello') // 弹出警示框 hello
console.log(window.f) // undefined
总结
首先我们能够在检查中 Sources 中明显的看到,再声明变量之前,a b c 都是存在的(默认一开始都是 undefined ),只不过 var 声明的 a 是在 Global (也就是 Window ) 中声明的相当于是 window.a = 1 ,而这个 let 所声明的是在和 Global ( Window ) 同级下的 Script 中,所以使用 let 声明的 window 是访问不到的(undefined),通过上述的 alert 例子直接访问 alert方法访问的则是 let 声明的,使用 window.alert 才能使用弹出警示框。