1.变量提升
* 通过var定义(声明)的变量, 在定义语句之前就可以访问到
* 值: undefined
2.函数提升
* 通过function声明的函数, 在之前就可以直接调用
* 值: 函数定义(对象)
console.log('-----')
/*
面试题 : 输出 undefined
*/
var a = 3
function fn () {
console.log(a)
var a = 4
}
fn()
console.log(b) //undefined 变量提升
fn2() //可调用 函数提升
// fn3() //不能 变量提升
var b = 3
function fn2() {
console.log('fn2()')
}
var fn3 = function () {
console.log('fn3()')
}
调用fn3()
3.面试题
function a() {}
var a
console.log(typeof a)
--> // 'function'
if (!(b in window)) {
var b = 1
}
console.log(b)
-->// undefined
var c = 1
function c(c) {
console.log(c)
var c = 3
}
c(2)