首页 > JavaScript中一个关于变量提升的问题

JavaScript中一个关于变量提升的问题

function main(){
    var read = read();
}
function read() {
    return 6;
}
main();

为什么报错呀,read不是应该等于6吗?


哪里覆盖了?main函数var read只是一个局部变量


因为main内部read会预解析为undefined,覆盖全局的函数。所以报错


实际上代码是变成这样了。声明提前。
function main(){
    var read = undefined;
    read = read();
    //此时read是undefined 不是一个函数,并不能调用
}
function read() {
    return 6;
}
main();

使用var存在变量提升,在函数开始有var read = undefined; read = read()就会报错


function main(){

var othername = read();

}
function read() {

return 6;

}
main();

这个就不会报错,我也不知道为什么。。

【热门文章】
【热门文章】