关于javascript:javascript函数声明和函数表达式重载

函数申明中,个别类型变量跟函数重名状况

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函数

论断:

  • 如果变量申明给与赋值,变量优先于函数申明晋升
  • 如果变量申明未赋值,函数申明优先于变量晋升
  • 如果变量申明给与赋值,变量依照先后顺序失效,前面笼罩后面
  • 如果变量申明未赋值,函数表达式失效

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理