第一题

作者: 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