一道经典笔试题a++与++a 烧坏了入门级前端的大脑CPU

264 阅读2分钟

前言

u=1365561453,3024527315&fm=253&fmt=auto&app=138&f=JPEG.webp

又到了一年一度的招聘季,为了更好的发挥面试 "钱学森" ,入职螺丝钉的 "雷锋精神"

小伙经过前期一系列准备,整装待发,自信满满~

直至看到这道基础题...

image.png

小伙轻蔑一笑:请给我一台华为笔记本,帮我打开chrome浏览器按F12。咱打印一下不就出结果吗

641.jfif

面试官心想这小子,思维跳跃,逻辑缜密,直指问题核心,背后一定有高人指点...

333.webp

面试官: 小子,咱们不玩虚的,你有本事就看着代码给我口算~

小伙简单思考,利用了九年义务教育的数学加法口算得出一公式

var a = 0;
console.log(a++ + a++ + ++a + a*a++ + ++a - a++ + a++ + ++a) 
//不就相当于
console.log( 1 + 2 + 3 + (3*4) + 5 - 6 + 7 + 8 )

//结果:32

面试官: 不对不对.. 还差得远呢!

小伙:我公式列在这里了,你敢怀疑我的小学加法水平?

面试官: 你这公式问题暴露得太多了~

小伙:咱们就放浏览器打印... 你给我看结果~

面试官:好小子,看就看... 结果等于:27, 你小子还有什么话说?

image.png

小伙擦了一下眼睛惊呼:这不对啊!这是怎么算的呀.. 不行,今天不能就在第一道题挂逼了, 求再给我一次机会吧~

面试官:行,难得你小子这么认真, 我去帮你倒杯水,你再好好想一下~

趁着面试官倒水的间隙,小伙瞬速上手电脑调试,通过搜索引擎查找 " JS++在前与在后" 的区别!

总结出答案:

a++(后加加):等于原变量的值,原值。(先赋值,再加1)

++a(前加加):等于自增以后值,新值。(先加1,在赋值)

通俗的讲就是 a++ 运算出来的值, 不会马上生效, 反之++a就可以! 咱浏览器测试如下:

image.png

image.png

那既然知道了原理,小伙此时目光再次移入该题,分析出了以下答案:

image.png

3343c056980242e881f88ba878dd16da_tplv-k3u1fbpfcp-watermark.png

最后得出结果:27

这时候面试官刚好走进来,看到了小伙分析结果.. 面露微笑!

面试官:小兄弟,基础不错呀,一杯茶的功夫就连同答案的过程都推断了出来!这样吧! 我这里还有一道,你再试一试? 如果解出来了,马上录用你

image.png

小伙此刻摔门而出,结束了今天的面试