敲代码的77 2022-03-17 14:12 采纳率: 73.7%
浏览 32
已结题

关于函数提升例子不了解

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

上面代码中的打印结果是1,2
打印1可以理解,就是函数声明式可以提升,而函数表达式无法提升,所以调用的是第二个fn(),但是第二个打印我就无法理解了,问什么调用的是第一个定义的fn()呢。

  • 写回答

3条回答 默认 最新

  • 千梦 2022-03-17 14:36
    关注

    因为var 定义的元素存在声明提升,所以代码翻译过来长这样

    img


    第一次你调用 fn 打印为2,是因为fn此时是个函数,你调用他直接就执行了,第二次调用的时候他已经将=后面的函数赋值给了fn,他会将你直接定义的fn替换掉,所以此时的fn就变成了你赋值之后的函数,你可以理解为你第一打印的时候还没有fn=function()这段

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月26日
  • 已采纳回答 3月18日
  • 创建了问题 3月17日

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程