码迷,mamicode.com
首页 > Web开发 > 详细

一道短小精悍的JS小题目

时间:2019-10-09 00:00:09      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:his   def   是你   有关   访问   efi   绑定   strong   com   

看到题目你是不是以为我在开车,没错,我就不承认,你能咋的,你瞅啥,别瞅我,瞅题

题目是这样式的

技术图片

 

 结果是啥呀,这里我就不买关子了,结果是undefined,相信基础好一点的大佬们一眼就能看出来,像我这种就必须两只眼一起看,这里我又想问一句了,大佬们闭着一只眼看代码不累吗

技术图片

 

 让我们先简单明了的来解释一下上面的代码

首先foo()实际上是由window调用的

技术图片

 

 由于普通函数this指向调用他的对象,所以foo中的this实际上指向的window

技术图片

 

 而此时又相当于是window调用了bar函数,所以bar里面的this也是指向window

技术图片

 

 此时,实际上要输出的是window.a,而在window这个全局对象上并没有a这个属性,所以输出了undefined

现在我们回到最开始的样子,并在window对象上绑定一个a属性

技术图片

 

 结果输出:我是window上的a属性

这里特别注意一点,可能有的同学会疑问为什么是输出undefined,而不是输出not defined呢?

因为JS访问对象上未定义的属性会返回undefined,而访问未声明的变量时则会抛出not defined。要是你还想再深究原因的话,明人不说暗话,我目前的水平也究不动,感觉是和引擎内部的实现有关,有知道的老铁们可以在我头上拍三下,夜深人静的时候我去你房里我们深入研究一波

技术图片

 

一道短小精悍的JS小题目

标签:his   def   是你   有关   访问   efi   绑定   strong   com   

原文地址:https://www.cnblogs.com/suihang/p/11638387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!