1. 首页
  2. IT资讯

如果能做对这道javascript试题,有资格去马云爸爸的阿里巴巴吗?

“u003Cdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fdfic-imagehandleru002F53d78357-0039-4570-8124-288511d34abc” img_width=”189″ img_height=”128″ alt=”如果能做对这道javascript试题,有资格去马云爸爸的阿里巴巴吗?” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E我相信,祭出这道题肯定是会考倒一大片面试者的,我在之前发表的文章中有说到了一道很类似的题,这里来一个它的升级版:u003Cu002Fpu003Eu003Ch1u003E写出下面代码片段的执行结果u003Cu002Fh1u003Eu003Cpreu003Efunction test(a,b){u003Cbru003E console.log(this);u003Cbru003E console.log(a);u003Cbru003E console.log(a+b);u003Cbru003E}u003Cbru003Etest.call(1);u003Cbru003Etest.call.call(test,1,2);u003Cbru003Etest.call.call.call(test,1,2);u003Cbru003Etest.call.call.call.call.call.call.call.call(test,1,2);u003Cbru003Eu003Cu002Fpreu003Eu003Ch1u003E让我们来仔细分析一下:u003Cu002Fh1u003Eu003Cpu003E1 . 首先,分析 test.call(1); 的执行结果:很容易理解,这句话相当于执行test函数,传入数字1作为 this , 结果如下:u003Cu002Fpu003Eu003Cpreu003ENumber {1}u003Cbru003Eundefinedu003Cbru003ENaNu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E2 . 接下来的:u003Cu002Fpu003Eu003Cpreu003Etest.call.call(test,1,2);u003Cbru003Etest.call.call.call(test,1,2);u003Cbru003Etest.call.call.call.call.call.call.call.call(test,1,2);u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E可能会让人比较头疼。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Ff2a580836ad84bec8ad39b74115e0a72″ img_width=”313″ img_height=”300″ alt=”如果能做对这道javascript试题,有资格去马云爸爸的阿里巴巴吗?” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E不要着急,这里教大家一个理解这类问题的大杀器,无论这中间有多少个call函数,都能简单解决u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F9e968e0d000a41c6a55d0625f1cd12ed” img_width=”640″ img_height=”480″ alt=”如果能做对这道javascript试题,有资格去马云爸爸的阿里巴巴吗?” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E大家要明白一个很重要的点:u003Cu002Fpu003Eu003Cpu003Ecall函数也是函数,那么call函数自然也会有call这个方法,那么在本题中:u003Cu002Fpu003Eu003Cpreu003Etest.call u003Cbru003Etest.call.call u003Cbru003Etest.call.call.call u003Cbru003Etest.call.call.call.callu003Cbru003E……u003Cbru003E都是存在的u003Cbru003E并且他们都等于u003Cbru003EFunction.prototype.call u003Cbru003Eu003Cu002Fpreu003Eu003Cpreu003Eu003Cbru003Eu002Fu002F所以u003Cbru003Etest.call.call(test,1,2);u003Cbru003Etest.call.call.call(test,1,2);u003Cbru003Etest.call.call.call.call.call.call.call.call(test,1,2);u003Cbru003E等效于:u003Cbru003EFunction.prototype.call.call(test,1,2)u003Cbru003Eu002Fu002F 执行结果都是: u003Cbru003ENumber {1}u003Cbru003E2u003Cbru003ENaNu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003EPS:如果这篇文章让你学到了一点知识,欢迎点赞并关注我哦,每天一点技术干货,让我陪你在大牛的路上越走越远!!!u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:如果能做对这道javascript试题,有资格去马云爸爸的阿里巴巴吗?

主题测试文章,只做测试使用。发布者:℅傍ㄖ免沦陷dε鬼,转转请注明出处:http://www.cxybcw.com/11218.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code