if里定义函数预编译问题

if(function b(){}){
    b();
}
上面语句会报错,因为在执行完if括号里的语句后,b函数就别回收了,下面的b就是未定义的,使用就会报错
console.log(text);//undefined
if(function b(){}){
    function text(){
    }
}
console.log(text);//text函数

因为在if大括号里定义函数,在预编译时是看作变量声明的 就相当于

var text = function(){}

。所以第一个输出是undefined,第二个输出是text函数源码


猜你喜欢

转载自blog.csdn.net/dreamjay1997/article/details/80686681