为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript 有名/匿名函数声明的竞争

JavaScript 有名/匿名函数声明的竞争

慕侠2389804 2018-08-20 11:10:37
看到 阮一峰老师的JS书有个例子没看懂:1  var f = function() {2    console.log ('1');3  }4 5  function f() {6    console.log('2');7  }8 9  f() output: 1chrome测试后的确输出了 1JS解释器在扫描这个作用域时,提升了哪些声明?如何提升的?Line 1 var f 这个变量声明肯定是提升了Line 1 function() 这个匿名函数的声明会提升吗?Line 5 function f()这个函数声明是不是类似于 var f = function() {...} ?如果是,第二次声明变量 f 应该是被忽略了所以会变成 f = function() {...} 咯?那为什么会忽略第二次函数声明对变量的赋值呢?按照这篇 博客“对于函数声明,Javascript 依然会进行变量声明提升,而且会给其赋一个初始的值。... 这个初始值其实是最后一次声明的那个函数。”岂不是应该忽略第一个声明,输出 2 才对嘛。
查看完整描述

1 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

 var f;  function f(){    console.log('2');
  }      
  f= function(){    console.log(1);
  }
  f()

这样写应该就比较好解释为什么是1了,变量和函数声明都提升了。


查看完整回答
反对 回复 2018-09-19
  • 1 回答
  • 0 关注
  • 502 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信