javascript百炼成仙 第一章 掌握JavaScript基础 1.12 JavaScript运算符

题目一出,真是几家欢喜几家愁,那些复习得好的,自然可以款款而谈,可是那些本身基础就薄弱的弟子,立刻尴尬地说不出话来。甚至有的弟子已经举双手表示要放弃比赛。这些举动立刻引来了场外那些大弟子的哄笑。尤其是其他院的弟子,更是偷来睥睨的目光。
林元青见此,暗叹一声,却是没有特别失落。根据往年的经验,青山院的弟子生源都是最差的,学得好的人更是凤毛麟角。在这一点上,青山院的弟子行走在宗门,也总是要比别人地上一头。
“哈哈,不愧是吊车尾的青山院,今年果然还是老样子,运算符这么简单的东西,都能难住这么多人。”
“就是啊,不过是运算符罢了,我看啊,青山院迟早退出内门,成为外门院系吧。”
第一场,是叶小凡和一个同门弟子之间的对决。
“快看,那个叫做叶小凡的,据说是才入门不久,依我看呐,运算符虽然简单可也不是这样一个刚入门的愣头青能够理解的。”
“就是啊,这不,他现在的脸色可真是要多难看有多难看啊,哈哈。”
没有理会这些流言蜚语,叶小凡眉头紧锁。这倒不是说运算符这么简单的基础他不会,而是因为叶老这个BUG级的老家伙存在,平时没少给叶小凡灌输一些比较深奥的功法和概念。因此,哪怕只是简简单单的运算符,叶小凡也在好好思忖该如何去概述。就在这时,对面传来了一阵傲慢的声音。
“嗨,你就是那个什么叶小凡吧,算你运气不好,碰上本大爷我。我可告诉你,JavaScript基础功法中,可没有什么功法可以难得住我的。所以,我劝你啊,早点认输投降吧。我看你对运算符也不是特别熟悉,何必在这丢人现眼呢,哈哈哈!”
叶小凡抬头一看,只见一个和自己年龄相仿的少年,已经开始自信地解释起来。
“JavaScript运算符,无非加减乘除和赋值运算,何难只有?赋值运算符用于给 JavaScript 变量赋值。比如我现在有一个变量,var a; 那么这个变量的值就是undefined,因为没有定义嘛。然后,我当然需要给它赋值咯。赋值的方法,就是用=号,把真正的值用=号赋给它,这个就叫做赋值。加减乘除,自然不用多说,不就是最简单算数嘛。比如说,我有两个变量,先用赋值运算符给它们赋值,然后计算加减乘除。这样吧,我写一段代码就全清楚了。”

var a = 10;
var b = 2;
var s1 = a + b;
var s2 = a - b;
var s3 = a * b;
var s4 = a / b;

“叶小凡,这段代码你能看得懂吗,我想你也是看不懂的吧。好了,本大爷我就大发慈悲,跟你解释下好了。”
林元青注视着这一切,没有多说话,根据演武场的规则,比赛双方切磋技艺,可以互相跟对象提问题,然后根据双方的作答情况和问题的质量,由评审团打出一定的分数。
“老林啊,看来这个弟子基础还可以啊,而且还很自信啊。想必这应该就是你们院的最高水准了吧”说话的是绿水院的掌尊-尹曾琪,平时和林元青关系不太好,常常喜欢冷嘲热讽。林元青笑了笑,并不答话。
“叶小凡,你可听好了,我就说一遍而已。因为a=10,b=2,所以两者加起来就是12。所以,s1等于12错不了。a-b=8, a*b=20, 最后是除法,10除以2自然是等于5啦。”
“好,现在轮到我说了。你方才讲得是自然不错,但是除了加减乘除,还有三个运算符没有说到。”叶小凡淡淡地说到。
“什么,那你说说还有什么运算符?”对面弟子不可置否地说到。
“首先是取余数的运算符 — ‘%’,取余数的意思就是一个数字除以另一个数字,除不尽的部分就是余数。比如5除以2,得到的结果就是2.5。当然,0.5是小数了,既然要取余数,自然就不能写成小数形式。5除以2,能够被整除的就是2(5=2x2+1),余下来1。因此,余数就是1。还有一种情况,小的数字除以大的数字,一个都不能被整除,比如2除以5,那么余数就是2本身。”
“啊,啊,是的,我正想要说呢,还有取余运算符。”
“除了取余运算符,还有自增运算符还有自减运算符。自增运算符是++,自减运算符是–。顾名思义,自增和自减运算符可以使得当前的变量自增一个单位或者自减一个单位。这里有一个需要注意的点,不管是自增运算符还是自建运算符,都分为两种。比如有这样一个例子。”

var a = 10;
var b = a++;
console.log(b);

这样写,得到的结果你猜等于几。
“哼,这有何难,自增代表的是自增一个单位。既然写了a++。那么b自然就是11了,你当我傻啊,问我这么简单的问题。”对面弟子气呼呼地说到。
“错了,答案是10。”叶小凡淡淡地说到,并且运功执行了这一段代码,只见得到的结果为:10。
“这,这,怎么可能?”对面顿时惊呼道。
“对于自增运算符来说,分为前置++和后置++。前置++,故名思议,就是在变量的前面写一个++。后置++就是在变量的后面写一个++,在我刚才的例子中,就是后置++。后置++的特点就是先让变量去参与运算,运算结束以后再进行++。好,再看一下我刚才举的例子。”

var a = 10;
var b = a++;
console.log(b);

“尤其注意第二句。”叶小凡用手指着第二句 var b = a++说道,“因为a++里面的++是放在后面的,那么这个就是后置++。后置++的意思就是先把a原来的值放进式子里面去运算,然后在++。也就是说,在这个赋值语句中,赋给变量b的值依然是10,而不是++后的11。”
“切,这有什么难的,我刚才不过就是一时疏忽罢了。如果我现在把题目改一改,就是11了吧。”对面弟子听完后感到破不服气,于是大手一挥,把代码改了改。

var a = 10;
var b = ++a;
console.log(b);

写完后,只见他想了想,终于鼓足勇气说道:“这个就是前置++了,++a的意思是先让a的值去++一次,a本来是10,经过++就变成了11。因为前置++的含义是先把变量放进式子里面去运算,然后++,所以这个代码的结果就是11。”
说完,对面弟子开始运功,将代码执行了一遍。果不其然,得到的结果是11。
“自然是这样的,但是我现在这样改一下,你说结果是多少呢?”叶小凡诡异地笑了笑,然后打出一段比较奇特的代码流:

var a = 1;
var b;
var sum = (b = a++ + --a)  +  a--  +  b++ ;

“噗!”看到这段代码,对面弟子差点一口老血喷出来,破口大骂:“叶小凡,你…你…你欺人太甚!”
“呵呵,这位师兄,这可怨不了我,再说了,互相切磋技艺也是演武场的规矩啊。”叶小凡回想起这段被叶老折磨的日子,再看到面前这位弟子的表情,顿时开心了不少。其实这道题目就是叶老给叶小凡在平时练习的时候出的。
“这个小娃娃倒是有趣。”绿水院掌尊尹曾琪看到叶小凡竟然能出这样的题,纵使是他也眼前一亮,不由称赞到。当然,以他目前的修为,这种题目自然是难不住他的。但是,很难想象,一个刚刚进入山门的小娃娃,竟然有如此造诣,实在是让人惊讶。
“这道题看似复杂,其实只要一步一步拆分,也是可以分析理解得很透彻的。”林元青微微一笑,看着叶小凡的目光中多了几分期待。毕竟,叶小凡是他亲自带上山来的,多少有一点印象。而且,他也很想看看,叶小凡如何来解答这道题。
“天哪,这种题目也太变态了吧。这个叶小凡真是不知道天有多高,地有多厚。”
“就是,就是,依我看呐,这根本就是那个叶小凡随便瞎掰的一道题,我看他自己多半也做不出来。”
“哈哈,师兄说的是啊,就让我们一起看看他如何出糗吧”
场外有很多资历比叶小凡高出不少的大弟子,有好多刚才试着算了一下,但是马上就自行放弃了,纷纷向叶小凡投来鄙夷的目光。但是,其中有一道目光却充满了严肃,这个人是一个和叶小凡年龄相仿的少年,旁边有几个功力深厚的年轻人跟随。这时候,一个长相略显老气的人对该少年说到:“少爷,您是当今台上大长老最喜爱的长孙,资质和天赋也是我派数百年来的翘楚。依属下看,这个叶小凡真是不知天高地厚,多半是随便糊弄了一下,自己都不知道这道题怎么解。”
只见少年把手一样,那名男子立刻不说话了。接着,他饶有兴趣地看着叶小凡,这人便是门派内定地继承人,门派中台上大长老最喜欢的长孙:罗丹。