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();
这个就不会报错,我也不知道为什么。。