第一题

作者: kafya | 来源:发表于2021-09-12 23:45 被阅读0次

    1. 请写出弹出值,并解释为什么

    +function(){
      alert(a);
      a();
      var a = function(){
        console.log(1);
      }
      function a(){
        console.log(2);
      }
      alert(a);
      a();
      var c= d=a;
    }
    alert(d);
    alert(c);
    

    考点

      1. IIFE,闭包
      1. 变量和函数的提升,此时函数的的名字也是a,变量也是a,所以会造成function a(){}, var a。此时var a因为未被定义所以被忽略了。所以顶部的输出值是2和2,接下来输出1 和 1,是因为函数的提升要比变量的提升更前。局面就是var a, function a(){}, a=function(){}
      1. 作用域和连等的问题,此时var c=d=a。实际是d=a, var c=d,在非严格模式下 c是undefined,严格模式下,c报错。

    扩展题

    var a ={n:1}
    var b=a;
    a.x=a={n:2};
    console.log(a.x);// undefined
    console.log(b.x);// {n:2}
    

    相关文章

      网友评论

          本文标题:第一题

          本文链接:https://www.haomeiwen.com/subject/uhlxgltx.html