函数声明中,一般类型变量跟函数重名情况
var fn = 1;
function fn() {
return 1;
}
console.log(fn); // 显示的是fn的值1
function fn() {
return 1;
}
var fn = 1;
console.log(fn); // 显示的是fn的值1,跟定义顺序无关
var fn;
function fn() {
return 1;
}
console.log(fn); // 显示的是fn函数
函数表达式中,一般类型变量跟函数重名情况
var fn;
var fn = function() {
return 1;
}
console.log(fn); // 显示的是fn函数
var fn = 2;
var fn = function() {
return 1;
}
console.log(fn); // 显示的是fn函数
var fn = function() {
return 1;
}
var fn = 2;
console.log(fn); // 显示的是fn的值
var fn = function() {
return 1;
}
var fn;
console.log(fn); // 显示的是fn函数
结论:
- 如果变量声明给与赋值,变量优先于函数声明提升
- 如果变量声明未赋值,函数声明优先于变量提升
- 如果变量声明给与赋值,变量按照先后顺序生效,后面覆盖前面
- 如果变量声明未赋值,函数表达式生效
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。