最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 意想不到的的控制台输出?(预编译、隐式类型转换、强制类型转换、this指向、事件循环)

    正文概述 掘金(破茧计划_张超)   2021-07-07   406

    原文链接,讲解更加详细:www.yuque.com/yw8upm/gr7b…

    仔细看下,内容如图,你觉得会输出什么?

    意想不到的的控制台输出?(预编译、隐式类型转换、强制类型转换、this指向、事件循环)

    答案是

    1、undefined, funtion arg(){}
    2、undefined
    3、108
    4、undefind
    5、我是熊大,年龄77
    6、我是熊大,年龄188
    7、我是熊大, 年龄88
    

    why?听我娓娓道来

    第一条:demo(18)执行 触发console.log(obj1, arg)

    答案undefined, funtion arg(){}

    • obj1 >>> undefined 这里可能大部分人都知道,因为函数的变量提升
    • arg >>> function 是为啥呢?为啥不是 18

    这里要引出第一个知识点:预编译

    预编译

    运行函数demo的前一刻发生了预编译环节

    • 第一步,生创建AO(Activation Object)对象:可以理解为demo这个函数拥有的一个冰箱,在执行内部代码时就通过这个冰箱来取东西(变量,函数...)
    • 第二步,将形参和变量声明当作AO的属性名,值为undefined
    • 第三步,将形参和实参相统一。
    • 第四步,在函数体里找函数声明,将值赋为函数体

    实参18 其实是在第三步。而第四步又被函数体所覆盖。所以第一条arg是function...

    第二条 执行console.log(length)

    答案undefined。 这个不用讲。

    第三条 执行console.log(length)没有疑问吧

    答案108。 这里已经执行了赋值length = 108

    第四条 执行if(console.log("undefined") || ....

    答案undefined, 没有想到吧?if判断条件内的也会被浏览器执行。 不光是可以执行,而且还没有返回值。所以这个时候回走进后面的或 (!!"" + "1" && typeof typeof null && !!length) 然后进行一系列操作:

    • !!"" + "1" >>> 字符串false1(强制类型转换)
    • typeof typeof null >>> typeof "object" >>> 字符串string

    第五条 执行obj2.say(光头强,77)没有疑问吧

    答案熊大,77setTimeout 你先等等!! 为啥不是光头强呢?因为say的this是obj1呀。

    第六条 执行promise.then : obj2.say(光头强,age)

    第七条 执行obj1.say(熊三,88)

    第六第七条,就是setTimeout 和promise的较量,也就是当然是微任务promise.then先执行了。

    原文链接,讲解更加详细:www.yuque.com/yw8upm/gr7b…


    起源地下载网 » 意想不到的的控制台输出?(预编译、隐式类型转换、强制类型转换、this指向、事件循环)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元