js中函数声明和变量生命优先级

在书籍《你不知道的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);//"变量"

如果大家觉得该篇文章还不错,就给个小小心,谢谢!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容