let中name的疑惑

在刷题目的时候看见了这样一个代码:

1
2
3
4
if (true) {
let name = 'zhangsan'
}
console.log(name) // 报错,因为let定义的name是在if这个块级作用域

但是我自己去试了这段代码结果并不一样呀…

是的,这是一个明显的作用域题目,试一试的心里就去浏览器试了试,这不试不知道,一试发现和题目的答案不一样呀,难道let已经能把值暴露在外面了?甚至以为自己的浏览器有问题了…

后来我对于这一题请教了一些人,定位到了问题所在,这其实是因为指向了window中的name

现在输出的结果就是对的了~