以下总结仅个人想法,有误请指出

1、普通情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//----------------------------------------
var b = 10;
function b() {

}
console.log(b);//输出10
//----------------------------------------
var a;
function a(){

}
console.log(a);//输出a方法
//----------------------------------------
function c(){

}
var c;
console.log(c);//输出c方法
  • 总结 1 不仅变量声明提升,函数声明也会提升,在变量不赋值的情况下,函数声明高于变量声明

2、特殊情况(自执行)

1
2
3
4
5
6
var b = 10;
(function b() {
b = 20 //这个时候的b就已经是b函数了,而不是外面的b
console.log(b); //输出函数b
})()
console.log(b);//输出10
  • 总结 2:也遵循总结1,自执行函数内部有自己的作用域,(在执行的时候,给自己赋值没有效果/b=20未生效)