关于函数提升之后的隐式转换

这道题真的困扰我好久了,现在终于解决了,我之前有过思路
和我想的差不多啊,但是我没有想到函数提升之后,会存在一个隐式转换。

下图是我之前的思路
在这里插入图片描述

这个是面试题,然后看变量提升之后的代码

  <script>
    var a = 0  // 全局的 a
    if(true){
      a = 1
      function a(){}
      
      a = 21 
      console.log(a); // 21
    }
    console.log(a); // 1
  </script>

变量提升的代码

 <script>
    var a = 0   // 全局的 a
    if(true){
      function a(){}  // 局部的 a
      a = 1  // 局部的 a = 1
      // function a(){}  隐式转换将 a 的值赋值给 全局 a。
      // 全局的 a = 1
      
      a = 21 // 局部的 a 等于 21
      console.log(a); // 打印的局部 a  21
    }
    console.log(a);  // 打印的全局 a   1
  </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值