也是在以前面试中也到过的一个题目:
var a = 1, b = 2, c = a+++b;
请问以下输出什么?
alert(c) ? alert(a) ? alert(b) ?
答案是:3,2 ,2
那么为什么是这样答案呐?
其实主要是考察 ++,-- 运算符的操作。
a++ 与 ++a的区别?前者是先执行运算执行完后再在a上加1,而后者是先给a加1后在执行运算。
所以就是为什么c的结果是3,而a结果是2的原因了。如果换成是i--那么结果读者也很好计算出来了?
参考:
http://www.qianduan.net/operator-priority-i-u003d-1-iii-u003d-3-ii-mean-what-and-why.html
1 楼
mbn
2010-09-28
c = a+++b;
很反感面试者拿这种自以为很高明的代码来折磨被面试者,如果只是单纯的考++i, i++, --i,i--之类的估计稍懂一点程序的人都能清楚的知道,但是这帮面试的家伙们自以为"c = a+++b;" 增色不少。 任何一门语言在编码中都有介于正确和错误中间的灰色地带,所以才会有编码规范。像这样的语句,就应该像错误那样对待它,没有什么好商量的, 在实际开发中如果有人写这样的代码,那么在review的时候应该不会通过。
很反感面试者拿这种自以为很高明的代码来折磨被面试者,如果只是单纯的考++i, i++, --i,i--之类的估计稍懂一点程序的人都能清楚的知道,但是这帮面试的家伙们自以为"c = a+++b;" 增色不少。 任何一门语言在编码中都有介于正确和错误中间的灰色地带,所以才会有编码规范。像这样的语句,就应该像错误那样对待它,没有什么好商量的, 在实际开发中如果有人写这样的代码,那么在review的时候应该不会通过。
2 楼
deng131
2010-09-28
平时大多数是在根据业务需求开发,很少关注这些细节,至少会很少使用些不常用方法,别人看起来也容易明白,让我想起了在豆瓣上别人说的那样,代码是写给人看的,计算机只是顺便执行下。