这期的题目是
请问以下 alert 语句分别弹出的值?
var a = b = c = d = e = f = 1;
alert(a++);
alert(++b);
alert(++ c);
alert(d ++);
alert(+ +e);
alert(+ + f);
这次主要考验大家对于操作符的理解,特别是一元操作符。让我们先来回顾下 Mozilla 官方 对于操作符方面的解释 。
下面再理解下 ++ 这个操作符号,通常我们都会将一元操作符直接加在变量的后面。类似的就变成了习惯,以至于对于这样的语句
alert(++ b);
就会产生怀疑。但是实际上,他们还是正确的( 来源 )。
「++ c 和 d ++ 只是运算符和运算数之间多了个空格,其实相当于++c和d++,同时建议大家除了 for (var i = 0; i < n; ++i) 这样的应用外,尽量少使用 ++ 和 --, 一来提高代码的可读性,二来避免某些不完善的 code formatter 导致错误」 -- from 小马。
那么上述问题的答案就非常明显了,分别是 1、2、2、1、1、1 。下面,再布置道家庭作业,来自 BT 的 小虎 同志 -_-!
var a = 1;
alert(- + - + + + + - + - - - - - - - + (-+-+-+-+-a++));
请问,上述的 alert 语句会弹出什么值?
挖哈哈,小虎果然牛呀。。。。。
家庭作业的结果是 -1
这个表达式中,可以忽略所有 a 左边所有的 + 号。再把 - 号成对地消掉(负负得正),最后简化为:
alert((-a++));
@comehope 赞一个,您是对的