前言
又到了一年一度的招聘季,为了更好的发挥面试 "钱学森" ,入职螺丝钉的 "雷锋精神"
小伙经过前期一系列准备,整装待发,自信满满~
直至看到这道基础题...
小伙轻蔑一笑:请给我一台华为笔记本,帮我打开chrome浏览器按F12。咱打印一下不就出结果吗
面试官心想这小子,思维跳跃,逻辑缜密,直指问题核心,背后一定有高人指点...
面试官: 小子,咱们不玩虚的,你有本事就看着代码给我口算~
小伙简单思考,利用了九年义务教育的数学加法口算得出一公式
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, 你小子还有什么话说?
小伙擦了一下眼睛惊呼:这不对啊!这是怎么算的呀.. 不行,今天不能就在第一道题挂逼了, 求再给我一次机会吧~
面试官:行,难得你小子这么认真, 我去帮你倒杯水,你再好好想一下~
趁着面试官倒水的间隙,小伙瞬速上手电脑调试,通过搜索引擎查找 " JS++在前与在后" 的区别!
总结出答案:
a++(后加加):等于原变量的值,原值。(先赋值,再加1)
++a(前加加):等于自增以后值,新值。(先加1,在赋值)
通俗的讲就是 a++ 运算出来的值, 不会马上生效, 反之++a就可以! 咱浏览器测试如下:
那既然知道了原理,小伙此时目光再次移入该题,分析出了以下答案:
最后得出结果:27
这时候面试官刚好走进来,看到了小伙分析结果.. 面露微笑!
面试官:小兄弟,基础不错呀,一杯茶的功夫就连同答案的过程都推断了出来!这样吧! 我这里还有一道,你再试一试? 如果解出来了,马上录用你
小伙此刻摔门而出,结束了今天的面试