摘要:下面这道面试题是新鲜出炉,最近一次笔试的时候遇到的,当时直接就懵逼了。第五问输出,这一问涉及到函数运算优先级问题,具体参考这里,和成员访问的优先级都为,所以这一问相当于一个实例后,访问的方法是上的,所以结果是
下面这道面试题是新鲜出炉,最近一次笔试的时候遇到的,当时直接就懵逼了。
然后在GitHub上咨询了mqyqingfeng,非常感谢这位博主对我的耐心解答!!
function Foo(){ getName = function(){ console.log(1); }; return this; } Foo.getName = function(){ console.log(2); }; Foo.prototype.getName = function(){ console.log(3); }; var getName = function(){ console.log(4); }; function getName(){ console.log(5); }; Foo.getName(); getName(); Foo().getName(); new Foo.getName(); new Foo().getName() new new Foo().getName();
第一问Foo.getName()输出2,不解释
第二问getName()输出4,因为getName函数声明会被提前,然后被函数表达式var var getName = function(){console.log(4);}所覆盖,所以输出4。
第三问Foo().getName()输出1,当函数Foo()执行完后,函数内的变量getName没有用关键字var定义,此时getName默认指向了window,相当于全局定义的getName再次被覆盖。而Foo()返回的this也是指向window,所以这一问相当于this.getName(),结果自然就是1了。
第五问new Foo().getName()输出3,这一问涉及到函数运算优先级问题,具体参考这里,new和成员访问的优先级都为19,所以这一问相当于(new Foo()).getName();new一个实例后,访问的方法是prototype上的,所以结果是3
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/83081.html
摘要:计算数组的极值微信面试题获取元素的最终前端掘金一题目用代码求出页面上一个元素的最终的,不考虑浏览器,不考虑元素情况。 Excuse me?这个前端面试在搞事! - 前端 - 掘金金三银四搞事季,前端这个近年的热门领域,搞事气氛特别强烈,我朋友小伟最近就在疯狂面试,遇到了许多有趣的面试官,有趣的面试题,我来帮这个搞事 boy 转述一下。 以下是我一个朋友的故事,真的不是我。 ... ja...
摘要:长话短说,让我们来看一道题统计的个数给定一个非负整数,对于任意,,计算的值对应的二进制数中的个数,将这些结果返回为一个数组。第二版本的时间复杂度是最后版本的时间复杂度是,是的二进制数中的的个数,介于之间。 小胡子哥@Barret李靖给我推荐了一个写算法刷题的地方leetcode.com,没有ACM那么难,但题目很有趣。而且据说这些题目都来源于一些公司的面试题。好吧,解解别人公司的面试题...
阅读 1043·2021-09-13 10:29
阅读 3393·2019-08-29 18:31
阅读 2635·2019-08-29 11:15
阅读 3015·2019-08-26 13:25
阅读 1372·2019-08-26 12:00
阅读 2302·2019-08-26 11:41
阅读 3379·2019-08-26 10:31
阅读 1489·2019-08-26 10:25