百思不得姐网站源码分享?百思不得姐官网

各位老铁们好,相信很多人对百思不得姐网站源码分享都不是特别的了解,因此呢,今天就来为大家分享下关于百思不得姐网站源码分享以及百思不得姐官网的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

写在前面

在面试的过程中,相信好多朋友都经历过一些百思不得其姐的题目,或难题,或怪题,或偏题。今天咱们一起来看一道相对偏、但其实又很基础的面试题。这道题是我的一个哥们儿,在半年前去面试字节跳动广州分公司的时候遇到的。他说当时不会做,回来后和分享的(其实是请教嘿嘿嘿~)。

知识预备

作为专业的切图仔,我们对于Function.prototype.call方法肯定不陌生(后面简写成Functionpush,然后我们自己发明了一个假数组(是指有length属性的对象),我们想要借用真数组的push方法来添加元素,可能会写出以下代码:

constarrayLike={\nlength:0\n}\n[].push.call(arrayLike,1)\nconsole.log(arrayLike);//{0:1,lenght:1}\n

第4行中就用到了Funtioncall方法的介绍完毕。下面就来看看今日头条的面试官小哥当初到底问了个什么问题,竟然让我的哥们儿百思不得其姐?

题目是这样的:

以下代码是可以正常执行的:

constarrayLike={\nlength:0\n}\n[].push.call(arrayLike,1);\nconsole.log(arrayLike);//{0:1,lenght:1}\n

但是把如果把[].push.call方法赋值到变量后再调用,在chrome却会报错:

constarrayLike={\nlength:0\n}\nconstcall=[].push.call;\ncall(arrayLike,1);\nconsole.log(arrayLike);\n

请问这是什么原因呢?

把Functioncall基本用法,来自己实现一个叫做Functioncall不能先赋值给变量后再调用了。

其他环境

但是再来看另外一个问题,chrome的错误信息callisnotfunction,其实是非常不友好的错误信息,甚至是自相矛盾的。因为他说call变量的值不是function,而用typeof检测却是function。所以这道题目的本身其实并不难,而是被chrome的极不友好的错误信息给误导了。

下面让我们来看看其他浏览器或node端的错误信息:

IE11浏览器edge浏览器:firefox浏览器node服务器

对比以上不同的浏览器,会发现,node服务器和chrome浏览器的错误信息是一样的,都是callisnotafunction,这是因为他们都用了v8解释器的原因。而IE11和edge的错误信息也基本一样,都是thisisnotaFunctionobject。而firefox的错误信息是Function.prototype.callcalledonincompatibleundefined,这是什么意思呢??我也不知道,于是悄悄的点击了错误信息右边的[详细了解],然后打开了mdn上关于X.prototype.ycalledonincompatibletype的详情页面,里面有对这种错误的详细介绍,并列举出了比如Funtionapply,Function#bind等,使用不当都会发生这样的错误。

来个总结

同一个错误在不同的浏览器上却出现了五花八门的报错信息,可以看出优雅的报错信息也是很难的,关于v8引擎的issue6513就是专门做这件事的。这个issue里有人提议:

varc=Function.prototype.call;c();\nUncaughtTypeError:cisnotafunction\n

Shouldbesomethinglike:

ciscalledwithundefinedasacontextwhichisnotafunction\n

或许改成提议那样确实会优雅一些。

另外,如果我们在平时工作中或面试中,遇到一些百思不得其姐的问题,不要凭空去猜测,要透过本质和原理去分析问题的根源。

还有后话

标题只是开玩笑的啦,如果你会做这道题目不一定能进头条,哈哈哈。但是如果不会做,就说明基本功不够扎实,就很有可能过不了面试啦。

我自己是一名从事了多年开发的web前端老程序员,目前辞职在做自己的web前端私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴,想要获取的可以关注我的头条号并在后台私信我:前端,即可免费获取。

作者:chess链接:https://juejin.im/post/5dca5516f265da4d3429b003

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平