1. 首页
  2. IT资讯

一道充满套路的javascript面试题,来看看吧!

“u003Cdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fe711d3ca0c974103ba06056d41facad3″ img_width=”435″ img_height=”239″ alt=”一道充满套路的javascript面试题,来看看吧!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E接上一篇文章:u003Ca class=”pgc-link” href=”https:u002Fu002Fwww.toutiao.comu002Fi6627248761116557832u002F?group_id=6627248761116557832″ target=”_blank”u003E如果能做对这道题,有没有资格去阿里呢?u003Cu002Fau003Eu003Cu002Fpu003Eu003Cpu003E我们来看下一道奇葩面试题:u003Cu002Fpu003Eu003Ch1u003E写出下面程序的运行结果u003Cu002Fh1u003Eu003Cpreu003Efunction test(){u003Cbru003E var i=0;u003Cbru003E return function(n){u003Cbru003E n = (i++)+n+(++i);u003Cbru003E return ++i+n+(i++);u003Cbru003E }u003Cbru003E}u003Cbru003E u003Cbru003Etest()(15);u003Cbru003Econsole.log(test()(20));u003Cbru003Eu003Cu002Fpreu003Eu003Ch1u003E考察知识点:函数闭包,i++和++i的区别u003Cu002Fh1u003Eu003Ch1u003E分析u003Cu002Fh1u003Eu003Cpu003E1.套路一:用函数闭包的形式来迷惑别人u003Cu002Fpu003Eu003Cpu003E这里的test()函数和其返回的函数(这里将它命名为returnFn)构成了一个闭包,因为returnFn中读取了test中的变量 i。u003Cu002Fpu003Eu003Cpu003E但是,每一次执行test() 的时候,变量 i 都被重置为 0 。如果没有注意到这一点,很容易被迷惑,认为 test()(15);执行后改变了 i 的值。u003Cu002Fpu003Eu003Cpu003E2.套路二: i++ 和 ++i 中先加和后加的区别u003Cu002Fpu003Eu003Cpu003E下面这段代码:u003Cu002Fpu003Eu003Cpreu003E n = (i++)+n+(++i);u003Cbru003E return ++i+n+(i++);u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E可以等效于:u003Cu002Fpu003Eu003Cpreu003Ei += 1; u002Fu002F ++i 先加u003Cbru003En = i +n +i;u003Cbru003Ei += 1; u002Fu002F i++ 后加u003Cbru003Ei +=1;u003Cbru003Ereturn i+n +i;u003Cbru003Ei +=1;u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E所以,这道题的结果为:28u003Cu002Fpu003Eu003Cpu003EPS : 如果这票文章让你学到了一点知识,欢迎点赞并关注我哦,每天一点技术干货,让我陪你在大牛的路上越走越远!!!u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:一道充满套路的javascript面试题,来看看吧!

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

联系我们

13687733322

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

邮件:1877088071@qq.com

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

QR code