欢迎光临散文网 会员登陆 & 注册

第1章 掌握JavaScript基础(中)

2023-07-21 11:31 作者:nich114514  | 我要投稿

1.5 基础考核 叶小凡兴奋起来,那种钻研了很久之后猛地豁然开朗的感觉实在是 太爽了。趁着心情大好,叶小凡继续钻研《JavaScript基础修炼要诀》, 一晃半天时间过去了。叶小凡性格谨慎,也非常刻苦,有很多问题即便 弄明白了,也忍不住要举一反三。 这段时间,如果肚子饿了,叶小凡就吃身上带的干粮。这一幕幕, 都被青山院掌尊看在眼里,他心里微微诧异,更多的是欣慰。 “此子修行刻苦,虽然目前只是黄衣弟子,可这种修行的忍耐力和 执着,哪怕是宗门护法,看到了也要心惊。” 在千鹤派,弟子根据修为的高低分为黄衣弟子和红衣弟子。红衣弟 子之上,便是宗门护法,护法再往上就是掌尊。但凡成为红衣弟子,便 会受到宗门的重视,修行资源和待遇也是水涨船高。如果有幸成为宗门 护法,那更是一步登天,在每一个大院,宗门护法的权力仅次于掌尊! 而此刻的叶小凡,还只是最低一级的黄衣弟子。 这期间,林元青时不时地会来到叶小凡的住处为他点拨一二。叶小 凡在林元青的点拨下,很多之前想不通的难题都迎刃而解,他看向林元 青的目光更是多了几分尊敬。 “叶小凡,下个月就是我们青山院基础考核的日子了!”林元青淡淡 说道。 “基础考核?”叶小凡一愣。 “没错,在千鹤派,每个月都会有一次考核,如果考核进入前5名, 除了能获得一笔宗门的奖励,还能收获不菲的贡献点。第一名甚至可以 直接进阶为身份更高的弟子!” 叶小凡自知现在自己是黄衣弟子,一旦晋升成功,就能成为红衣弟 子。临走前,林元青看了叶小凡一眼,说:“希望这次你别让我失望!” 1.6 叶老 这一日,叶小凡来到青山院附近的小山上修炼,忽然被一块石头绊 了一跤,正在他自认倒霉地打算爬起来的时候,他在石头缝里发现了一 枚古怪的戒指。戒指通体呈现枯黄色,似是年代久远。 “摔了一跤,捡到一枚戒指,算是补偿吧,虽然这枚戒指应该也没 什么用。”叶小凡随手拿起戒指,戴在了手上。就在这时,一股神秘的 力量从叶小凡的丹田之处涌了上来,这股力量将他置身于一个奇妙的空 间之中。 “哈哈哈,小娃娃,没想到我叶老被封印了上千年,今天托你的福 终于重见天日啦!咦,你的修为怎么这么低,竟然连幼儿园的水准都没 有!罢了罢了,从今以后就由我来教导你,你最好给我尽快达到大学的 修为,这样我就可以真正地自由啦!” 叶小凡被这突如其来的声音吓了一跳,惊慌地喊道:“怎么回事, 你是谁,你想干什么?” “我是叶老,几千年前是这片脚本大陆的最强者,只不过不小心遭 人暗算,才被封印到了这枚戒指中。小娃娃,你现在的修为太低了,等 你到了大学境界,才能有力量把我放出来,我也就自由了。小娃娃,你 放心,等你把我放出来后,我绝对不会亏待你。跟着我,包你从今往后 吃香的,喝辣的。哎呀,小娃娃,你干什么?快住手,快住手!” 叶小凡虽然谨慎、愿意吃苦,但到底是没有遇到过这么离奇的事 情。戒指里面封印着这片大陆的最强者,这听起来实在是有些天方夜谭 了。 叶小凡心想:“莫不是妖怪?嗯,对了,一定是妖怪!赶紧扔,赶 紧扔!” “这不是真的,我一定是在做梦,妖怪爷爷,你可别来找我啦!”说 着,叶小凡扬起他那只白嫩的小手,手心里攥着那枚刚捡来的戒指,就 要扔到悬崖下边。 “小娃娃,你快住手啊,我说的是真的,我可不是什么妖怪,我是 叶老啊。哎呀呀,我好不容易等来一个人,这么多年都等下来了,你这 要是一扔,我又要等到猴年马月才能有希望出来了!”叶老这下真的急 了,语气丝毫没有了之前的从容和兴奋,有的只是惊慌和无奈。 “哼,你还嘴硬,还说你不是妖怪,你当我傻啊。大学境界是传说 中才有的境界,根本没有人可以修炼到。我们宗门的太上大长老,也不 过是高中境界,可即便是这样,他也有只手遮天的能力了,看我不扔了 你。”说着,叶小凡又要扔。 “哎呀呀,好了好了,我不说了好不好?对了,小娃娃,你来问我 问题啊,在这片大陆上,JavaScript的功法和心得还没有什么可以问倒 我。”叶老都要哭了,真没想到自己好不容易有了重获自由的希望,却 马上就要泡汤,能不能不这么刺激呀? 叶小凡听到这话,愣了一下,心想难道这是真的?可转念一想,天 知道这个老妖怪在打什么主意,还是扔了好,扬起手又要扔。 “小娃娃,你可知道对象数据类型?”叶老吼道。 1.7 对象数据类型 听到这句话,叶小凡一顿,动作停止了下来。 对象数据类型在《JavaScript基础修炼要诀》中只是提了一下,并没 有细讲,它深深地勾起了叶小凡的好奇心。 “小娃娃,相见是缘,既然你感兴趣,我便教你一教。你且听好, 在JavaScript中,数据可分为两类,分别为原生数据类型和对象数据类 型。所谓对象数据类型,是一种复合型的数据类型,它可以把多个数据 放到一起,就好像一个篮子,这个篮子里面的每一个数据都可以看作是 一个单元,它们都有自己的名字和值。” 叶小凡被叶老的话深深地打动了,立刻聚精会神地听起来。 “现在你相信了,我可还是妖怪?” 叶小凡嘿嘿一笑,重新把戒指戴好。 “小娃娃,你叫什么?” “叶小凡!” “嗯,老夫姓叶,你也姓叶,确实有缘。小娃娃,我且问你,你可 愿意拜我为师?” “弟子愿意!” 说完,叶小凡将戒指摘下,放在身前的岩石之上,开始行拜师之 礼。叶老虽然没有形体,但是却能看得一清二楚,待所有礼节完毕,叶 老这才满意地点了点头。 “很好,小娃娃,你可听好。对象数据类型比原生数据类型强大了 不少,原生数据类型,比如数值型、浮点型、布尔型等都只能存放一些 直接量,也就是说单一的数据。而对象数据类型却是可以存放一大堆数 据的集合,这些数据都有自己的名字,比如……” 忽然,叶小凡心头一亮,感觉有清晰的画面传来。 “我现在没有形体,但是我却可以用意念来给你做演示,小娃娃, 你且看好。现在我给你创建一个对象。”

“创建对象就是用一个大括号吗?” “这是创建对象的一种方式,也是最常用的方式。创建对象以后, 就相当于开辟了一块内存,对象包含若干数据,每个数据都有自己的名 字和值。对象好比是一个容器,现在我要在这个容器里面放一个数据, 你且看好!”

“小娃娃,你可看明白了?” “前辈,您刚才说对象数据类型里面可以放若干数据,那现在它里 面是不是已经有了一个数据,数据的名字叫作caoyao,它的值是字符串 类型的草药?”叶小凡两眼放光,回答道。 “嗯,小娃娃,看来你的悟性还可以。在这个例子中,caoyao叫作 键,草药叫作值,它是一种键值对的形式。”叶老哈哈大笑。 “键值对,键值对,一个键对应一个值,一个键和一个值就凑成了 一对,键和值中间用冒号。哦,我明白了!”叶小凡恍然大悟,随即又 问道:“那么,前辈老爷爷,您刚才不是说对象数据类型里面可以放若 干个数据吗?现在里面只有一个,怎么添加第二个呢?” “嗯,小娃娃,这个问题问得很好。你且听好,如果你想要在一个 对象里面添加新的数据,则只需要添加一个逗号,然后写上新的键值 对就行了。”

“小娃娃,我现在给你演示的方式是在创建对象的时候立刻在对象 里面设置键值对。其实还有其他办法,那就是在对象创建之后,在外面 对这个对象的变量进行操作。你且看好,我现在用新的办法改写刚才的 例子。”

“虽然我不太明白这里面的玄妙,但是我大概猜到了caoyao是 container这个对象的属性,似乎就是把刚才写在“{}”里面的东西又在外 面重新写了一次的意思吧。” “嗯,孺子可教,container.caoyao中的点(.)就是对象访问属性的 意思,正因为caoyao是container的属性,所以container才可以用点 (.)。对象包含若干数据,每个数据都是一个键值对,这些数据也叫 作对象的属性。那么键值对中的键就是属性名称,键值对中的值就是属 性值。” “我明白了,但是我还有一个疑问,如果对象用点(.)访问一个根 本不存在的属性会怎样呢?”叶小凡问道。 “好问题,就比方说刚才的例子,如果我直接访问一个根本不存在 的属性danyao,那么会怎样呢?小娃娃,看好!”

结果是undefined。 “我明白了,danyao这个属性不存在于container对象中,因此它是 未定义的,得到的结果就是undefined!”叶小凡惊呼。 1.8 对象的取值 “小娃娃,我现在问你,如果我不知道对象的某个属性叫什么名 字,那么又该怎么访问对象中对应这个属性的值呢?”叶老笑呵呵地问 道。 “什么什么,事先都不知道对象的属性名称,怎么可能访问得到 啊?这我可不知道,我想这是不可能的。”叶小凡想了想,赶紧摇头。 “这样吧,我换一种说法。我想你现在已经知道对象可以通过一个 点号(.)访问其中的某一个数据了。”说着,叶老随手一挥,一个对象 就生成出来了。

“我现在想要得到解毒草,就直接用container调用它的caoyao属 性。”

“这样做的确是可以的,但是如果遇到这种情况,即事先不知道调 用的属性叫什么名字,那么该如何用一个变量定义属性呢?”说着,叶 老又随手一挥,定义了一个变量。

“这……”叶小凡也陷入沉思,过了许久,缓缓说道:“直接点prop肯 定不行,那样的话,container调用的肯定是一个叫作prop的属性。而事 实上,container对象里面是没有叫作prop的属性的,得到的结果肯定是 undefined。” 听到这里,叶老向叶小凡投去了赞赏的目光,继而说道:“你的分 析没有错,这里不能再用之前的那种方法了。小娃娃,你且看好!”话音刚落,叶老就打出了新的代码。

“这!”叶小凡惊呼。 看着叶小凡惊讶的样子,叶老似乎有些得意。 “小娃娃,这就是我教你的新技巧,对象不仅可以用点号(.)访问 它的一个属性,也可以用中括号([])。如果用中括号,里面就允许再 写一个变量。当然了,写字符串也是可以的。” 似乎是担心叶小凡理解不了,叶老又补充了一行代码。效果如图1- 2所示。

过了好一会儿,叶小凡才回味过来,说道:“我明白了,如果事先 属性的名称未知,或者调用的属性是动态变化的,就不能使用点号 了。使用中括号可以最大程度地提升对象调用属性的灵活度!” 1.9 循环遍历的奥妙 “小娃娃,我且问你,可否知道循环遍历的法术?” “循环遍历不就是for循环或者while循环吗,这有何难?”说着,叶 小凡就随便打出了一段代码。

“嗯,你使用的是for循环。如果你希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的。就好像你刚才 写的,你想要重复使用console.log输出一个东西,使用for循环的确可 行。那你可知while循环?” 叶小凡想了一下,说道:“感觉while循环和for循环差不多吧,就是 它们在语法上稍微有点区别。”说着,叶小凡随手打出一段代码,将刚 才的for循环改写成了while循环。

“i++是自增运算符,表示把当前的变量自增一个单位。而++i和 i++是有区别的,前者代表先自增一个单位,再运算;后者相反,表示 先运算,再自增一个单位。但是由于这段代码中的i++占单独一行,没 有对i进行使用,所以不管是++i还是i++,只要这句话执行完毕,i的值 都会自增。” 听到这里,叶老满意地点了点头。 “小娃娃,看来你的基础不错,那你说说while循环和for循环除了语 法还有什么区别。 “这……”叶小凡一时语塞。 “小娃娃,你且看好,你方才写的for循环中有一个小括号。小括号 里面有3个表达式,分别为“var i=0”,“i<10”还有“i++”。第1个语句是在 循环开始之前执行的,“var i=0”的意思是定义了一个变量i,是整数,初 始值为0。第2个语句是“i<10”,表示进入循环体的条件。” “循环体就是那个用大括号({})扩起来的部分吗?”叶小凡问道。

“没错,不论是for循环还是while循环,循环体就是这个部分,这个 部分里面的代码是需要被多次执行的。现在我再给你说说最后一个语 句“i++”,这个语句是在刚才我们所说的大括号里面的代码被全部执行 之后才会被执行的。一般来说,上面这段语句里面的代码可以控制循环 变量i自增一个单位或者自减一个单位。” “自增我知道,无非就是i++或者++i,为什么要自减呢?” “关于这个问题,是和第2个语句相关联的。比如你刚才写的代 码。”说着,叶老指向叶小凡刚才写的代码。

“你的循环判断条件是当i<10的时候才会进入循环体,也就是后面 用大括号扩起来的部分,对吧?”叶老问道。 “没错,最开始的时候i=0,第一次循环中i自然是小于10的,于是就 进入了循环体,像这样。”说着,叶小凡催动内力,让这段JavaScript代 码开始执行。 当执行到这一行代码的时候,叶小凡特意让代码停了下来,调试代 码。效果如图1-3所示。 “嗯,很好,我且问你,现在代码停在了这一行,如果我再往下执 行一步,那么会到第4行还是停留在第3行呢?”叶老问道。

“那还用问,肯定是跳到第4行啦。”叶小凡十分肯定地说道。 “先别着急下结论,走一步试试。”叶老对叶小凡说道。 “试就试。”说着,叶小凡就用debug走了一步。效果如图1-4所示。

“这是怎么回事?”叶小凡讶然,同时皱了皱眉。 “你再走一步试试。”叶老笑呵呵地说道。 就这样,叶小凡又走了一步,这才发现走到了第4行。经过反复测 试,叶小凡紧皱的眉头终于松开了。原来,第一次跳到第3行代码的时 候,是在准备运行for循环的语句1,也就是“var i=0”这句话。因此,刚 才第一次跳到第3行代码的时候,i变量的值是undefined(未定义),因 为这个时候只声明了i变量,还没有运行“i=0”这个赋值语句,所以是 undefined。而当叶小凡往下再走一步的时候,则是运行了“i=0”这个赋 值语句,这个时候,i变量的值才如愿以偿地变成了0,整个语句1才算 是执行完毕了。为什么再走一步就能够跳转到第4行代码呢?这是因为 语句1执行完毕后就自然会执行语句2了,也就是“i<10”这句话,这就好 比是一个if判断。

第一次循环的时候,i=0自然是小于10的,因此直接进入了循环 体。循环体执行完毕后,开始执行语句3——“i++”,i从0变成了1,然后 进入第二次循环,再次判断i是否小于10。 听着叶小凡的论述,叶老微微点了点头,说道:“是这样的,那么 问题来了,在刚才的例子中,i从0一直自增到10,当然,它最后会变成 10,但是却无法再次满足i<10的判断条件了。所以,当i=10的时候,就 无法进入循环体了。可是这并没有关系,因为第一次i=0是符合条件 的,最后一次进入循环体是在i=9的时候,像这样。”说完,叶老随手一 挥,将这段代码的运行结果显示了出来。效果如图1-5所示。

“嗯嗯,我明白了,因为i变量是从0开始的,所以0~9还是循环了10 次。至于刚才说的自减,其实也是一样的,只要改变一下循环条件和初 始化变量i的值就行了。” 说完,叶小凡修改了一下代码。

“同样是循环10次,这回就是变量i从10减到0的过程了。”叶小凡说 道。 “没错,是这样的。while循环只是在语法上有所不同,其作用和 for循环是一样的。很好,看来你已经掌握了循环的奥妙。” 小结 for循环是你在创建循环时常会用到的工具。也就是说,如果某一段 代码需要多次执行,若不用循环,则需要将相同的代码重复书写多遍。 下面是for循环的语法。

while循环会在指定条件为真时循环执行代码块。 下面是while循环的语法。

1.10 对象内容的遍历 “既然你现在已经知道了如何使用for循环,那么现在我就来教你如 何用这个技术遍历一个对象。”叶老说道。 “对象里面无非就是属性和函数,你的意思是给我一个对象,想办 法获取它里面所有的数据(键值对)吗?” “没错,假设有这样的一个场景:我需要判断一个对象中哪些东西 是属性,哪些东西是函数。这就需要我依次获取这个对象里面的所有东 西,然后判断谁是属性、谁是函数。” “等等,就算拿到了这些东西,怎么才能判断谁是属性、谁是函数 啊?我好像还没有这方面的法术。” “不用担心,这个很简单,你只需要用一个typeof关键字就可以了。 比如,我现在有一个字符串和一个函数。”说着,叶老写出了如下代 码。

“然后,用typeof关键字包裹一下,再输出看看。”

效果如图1-6所示。“看到了吧,这样就可以得到变量的类型了。a 是一个字符串,所以typeof出来就是string;fun是一个函数,所以 typeof出来就是function。接下来,我来跟你说说如何遍历一个对象。 首先,新建一个简单的JavaScript对象。

“然后使用for循环进行遍历。”

“效果如图1-7所示。这个for循环和之前的写法是不同的。其中,p 是一个随便取的名称,代表yeXiaoFan对象中遍历出来的属性名称。通 过这种方法,我可以在事先不清楚对象有哪些属性的情况下把属性的名 称都获取到。”叶老缓缓地说道。

“那么除了属性名称,属性的值也可以得到吗?”叶小凡眨了两下眼 睛,好奇地问叶老。 “属性名称都得到了,你还愁没有属性值吗?”叶老一吹胡子,笑呵 呵地反问。 “啊,我明白了,既然有了属性名称,那么对象可以用点(.)的方 式直接获取属性的值。当然,用中括号([])也是可以的。”叶小凡恍 然大悟。看到他如此表现,叶老也不禁点了点头。 “没错,是这样的。我们只需要把刚才的代码稍做修改就可以 了。”说着,叶老又打出一段代码。

“成了,可是你刚才为什么不用点号?”叶小凡嘀咕道,可是转念一 想就明白了其中的缘由。因为遍历出来的属性名称是不确定的,而是 用一个p变量指代,既然是变量,自然不可以用点号。因为如果写成 yeXiaoFan.p,那么就会被认为是寻找一个名字叫作p的属性,然而事 实上,p只不过是一个变量的名称而已。换句话说,p随便叫什么都没 关系,反正它只是一个变量的名称罢了,真正重要的不是p变量叫什么,而是p变量指代的内容是什么。 “我看到你的表情就明白你已经懂了,没错,你的猜想是正确的。 一旦遇到这种属性名称不确定的情况,就只能用一个变量代替,换句 话说,不能用点号,只能用中括号。因此,当对象访问属性的时候, 用中括号是更加灵活的。” “那么,我是不是应该时刻都用中括号,再也不用点号了?” “那倒不一定,有些情况,或者说绝大多数情况还是用点号。因为 大部分的情况下,你都是已经明确知道属性的名字叫什么了,那么毫无 疑问,用点号是更加方便的,你说是吧。” 叶小凡想了一会儿,然后点了点头。 1.11 外门小比 一转眼,大半个月已经过去了,这段时间,叶小凡一有时间就会向 叶老讨教相关的JavaScript知识。凭借叶老的广博见闻和技术底蕴,自然 没有问题。叶小凡也因此受益,这段时间他的功力突飞猛进。 “马上就要到一年一度的外门小比了,听说这次我们要和紫云派的 弟子进行外门小比。去年我们险胜了对方,对方一直不服气,据说这次 他们是有备而来的,而且培养出了一个天才少年,叫什么简南。” “紫云派超级新人简南,不会是那个人吧?他年纪轻轻就已经被内 定为下一代掌门的候选人,据说紫云派这么多年来就出了这一个资质绝 佳的天才。” 叶小凡走在路上,时常听到人们在议论这些事情。 “外门小比似乎有点意思,要是我能够入选去参加比赛就好了,那 样也可以给门派争光!”叶小凡想。没想到,青山院下午就收到了通 知,要求从新入门的弟子中挑选一位最具天资的人参加即将开始的外门 小比。一石激起千层浪,新入门的弟子可不止叶小凡一个人,他们一个 个都摩拳擦掌、跃跃欲试。 为了挑选出最为合适的人选,林元青特意在演武场召集了青山院的 所有记名弟子,包括叶小凡在内,共计16人。要想获取参赛的名额,就 必须在这16人中脱颖而出。 演武场占地约2亩,是每个院定期切磋技艺的地方,16名弟子被安 排在一块用大理石砌成的场地上两两相对,即将进行参赛人的角逐。 “我是青山院的林元青,今日,我需要从你们中挑选出一个人参加 即将到来的外门小比。比赛采用两两对决的形式,胜利的一方将进入下 一场比赛,失败者直接退出。” 这种比赛对于一些来看热闹的大弟子来说并不陌生,反正每年都是 这样搞的。前来观赛的还有很多其他院的弟子,他们无非也是想来看看 这一届的新人中有没有什么特殊的。 “好吧,比赛开始,第一场的题目:运算符。请每个弟子根据自己 的理解详细概述运算符,然后由我评判谁可以晋级。”林元青淡淡地说 道,随后就身形一飘,继而稳稳地出现在了裁判席。裁判自然不止林元 青一个人,其他几个院的掌尊今天也一并来了。 “什么,运算符?”有些基础不好的弟子听到这个词当即皱起了眉 头。 1.12 JavaScript运算符 题目一出,真是几家欢喜几家愁,那些复习得好的弟子自然可以侃 侃而谈,可是那些基础薄弱的弟子立刻尴尬得说不出话来,甚至有的弟 子已经举起双手表示要放弃比赛。这些举动立刻引来了场外那些大弟子 的哄笑。尤其是其他院的弟子,更是投来睥睨的目光。 林元青见此暗叹一声,却没有特别失落。根据往年的经验,青山院 的生源都是最差的,学得好的人更是凤毛麟角。因此,青山院的弟子行 走在宗门,也总是要比别人低上一等。 “哈哈,不愧是吊车尾的青山院,今年果然还是老样子,运算符这 么简单的东西都能难住这么多人。” “就是啊,不过是运算符罢了,我看啊,青山院迟早退出内门,成 为外门院系吧。” 第一场,是叶小凡和一个同门弟子之间的对决。 “快看,那个叫作叶小凡的据说才入门不久,依我看,运算符虽然 简单,可也不是这样一个刚入门的愣头青能够理解的。” “就是啊,这不,他现在的脸色可真是要多难看有多难看啊,哈 哈。” 叶小凡没有理会这些流言蜚语,而是眉头紧锁。倒不是说运算符这 么简单的知识他不会,而是因为叶老这个BUG级的老家伙存在,他平时 没少给叶小凡灌输一些比较深奥的功法和概念。因此,哪怕只是简简单 单的运算符,叶小凡也需要好好思考该如何概述。就在这时,对面传来 了一阵傲慢的声音。 “嗨,你就是那个什么叶小凡吧?算你运气不好,碰上了我。我可 告诉你,在JavaScript基础功法中,可没有什么功法可以难得住我。所以 我劝你早点认输投降吧。我看你对运算符也不是特别熟悉,何必在这丢 人现眼呢,哈哈哈!” 叶小凡抬头一看,只见一个和自己年龄相仿的少年已经开始自信地 解释起来。 “JavaScript运算符,无非加、减、乘、除和赋值运算,何难之有? 赋值运算符用于给JavaScript变量赋值。比如我现在有一个变量“vara;”,那么这个变量的值就是undefined,因为没有定义嘛。然后,我当 然需要给它赋值咯。赋值的方法就是用“=”,把真正的值用“=”赋给它, 这个就叫作赋值。加、减、乘、除自然不用多说,不就是最简单的算术 运算嘛。比如我有两个变量,先用赋值运算符给它们赋值,然后计算 加、减、乘、除。这样吧,我写一段代码就全清楚了。”

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

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

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

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

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

第1章 掌握JavaScript基础(中)的评论 (共 条)

分享到微博请遵守国家法律