面试题一
题目一
var a = 3
function fn(){
console.log(a)
var a = "hello"
}
fn()
- undefined
- 上面代码相当于
var a = 3
function fn(){
var a;
console.log(a)
a = "hello"
}
fn()
题目二
if(!(a in window)){
var a = "hello"
}
console.log(a)
- undefined
面试题二
function a(){}
var a
console.log(typeof a);
- function
function a(){}
var a = "hello"
console.log(typeof a);
- string
面试题三
var a = 1
function a(a){
console.log(a)
var a = 3
}
a(2)
- 报错
技巧
- js代码执行的时候会将所有的声明(注意不是赋值)放在代码执行前,这个声明包含变量声明和函数声明
- 函数声明的优先级高于变量声明,但不会高于变量赋值
产生
- 用var声明的变量
- 用function声明的函数
var a = 1;
function b(){}
步骤
- 先明确执行的代码,作用域
- 明确执行代码的变量提升