1: 变量提升
1: 变量声明提升 通过var 关键字声明变量, 在定义语句之前就可以访问到
1: 变量声明提升
通过var 关键字声明变量, 在定义语句之前就可以访问到, 但是值为 undefined
var a = 3;
function fn() {
console.log(a);
var a = 4;
}
fn(); // undefined
函数有自己的作用域: 在执行fn() 函数的时候: 函数内部 console.log(a) ===>
function fn() {
var a;
console.log(a);
var a = 4;
}
fn(); // undefined
--------------------------------------------------------------------
2: 函数声明提升
通过函数function 声明函数, 在之前就可以调用 值是函数定义对象
fn1(); // fn1 // 函数可以调用
var b = 3;
function fn1() {
console.log('fn1()')
}
-------------------------------------------------------------------
特殊类型:
fn3(); // 不可以调用 报错: fn3 is not a function
这是变量提升, 而不是函数提升
var fn3 = function() {
console.log('fn3()')
}