在书籍《你不知道的JavaScript》(上卷)中写道:
"函数会首先被提升,然后才是变量"
请看以下demo:
console.log(fn);
function fn(){
console.log("函数声明");
}
var fn="变量";
执行上面demo,输出结果为:
function fn(){
console.log("函数声明");
}
出现这种结果的原因是执行顺序为:
function fn(){
console.log("函数声明");
}
var fn;
console.log(fn);
fn="变量"
函数提升优先级比变量提升要高,且不会被变量声明所覆盖,但是会被变量赋值覆盖。如果在最后再加上打印就能看到函数已经被覆盖。
console.log(fn);//打印出依旧是函数
function fn(){
console.log("函数声明");
}
var fn="变量";
console.log(fn);//"变量"
如果大家觉得该篇文章还不错,就给个小小心,谢谢!!!