var foo = "test"
答案: undefined
解析: 变量foo,相当于只有var foo;但是却没有赋值,所以值是undefined,并且变量的声明并不会提升,只有函数声明会提升
词法作用域...if(false) {
var temp = 456
}
}
f();
答案: undefined
解析: 在没有调用 f 函数时,temp的值是123,在查找变量时,它先会从函数内沿着作用域链逐级向外进行查找...,若有则会返回,若无,则会返回undefined,
使用var声明的变量并不会有块级作用域,在if语句块声明赋值的变量,相当于是裸露的,因为在 f函数内,变量先使用,但是未赋值,所以是undeifined...块级作用域
写出下面一段代码输出的结果
var temp = 123;
function f() {
console.log(temp);
if(true) {
console.log...答案: 123,然后报错ReferenceError: Cannot access 'temp' before initialization,无法在初始化之前访问变量
解析: let声明的变量是有块级作用域的