一、问题
console.log(a);
var a = 1;
var a = function(){
console.log(2);
}
function a(){
console.log(3);
}
console.log(a);
二、解决
1. 变量声明提升
...
var a = 10;
等于
var a;
...
a = 10;
2. 函数声明提升
...
function f() {
console.log('function');
}
等于
var f;
f = function () {
console.log('function');
};
...
3. 变量提升和函数声明提升冲突
console.log(a);
var a = 10;
function a() {
console.log('function');
}
console.log(a);
等于
var a;
a = function(){
console.log('function');
}
var a;
console.log(a);
a = 10;
console.log(a);
4. 函数声明和函数表达式冲突(跟3一样)
function f(){
console.log('function');
}
var f = function(){
console.log('var');
}
三、实际面试题
console.log(a);
var a = 1;
var a = function () {
console.log(2);
}
function a() {
console.log(3);
}
console.log(a);