JavaScript-百炼成仙(第1节掌握JavaScript基础1.1-1.21)

本书原文作者为 CSDN 博主「剽悍一小兔」https://blog.csdn.net/weixin_39570751 ,是他出版的一本 javascript 编程修仙小说,本文为节选

1.1 第一章 初入宗门

 乐阳村处于脚本大陆东部的边缘地带,其民风淳朴,村民日出而作、日落而息。某一日清晨,所有村民都来到了村口,正在为一个十五六岁的少年送行。只见那个少年虽然身体瘦弱,可是目中却绽放出异彩;身躯虽不壮实,倒也挺拔。

 “叶小凡,你是我们全村人的骄傲,是百年来唯一具备修行 JavaScript 甲等资质的孩子!马上会有千鹤派的大人来接你,今后你一定要认真修行,给我们全村的人争光!”

 他叫叶小凡,几天前通过了修行资质的检验,符合了修行 JavaScript 的资质。

 “千鹤派!”叶小凡眼前一亮,语气中伴随着激动,两眼放光。千鹤派在脚本大陆是数一数二的大门派,每个宗门弟子都能够修炼一种神奇的功法——JavaScript,修成之后,其威力之大,足以翻山倒海,称霸一方天地!

 不多时,天气风云变化,一道长虹降下,瞬间变为一人。他身穿一件玄青色的玉锦衣服,腰间绑着一根白色蟠螭纹革带,一头黑发,有着一双清澈明亮的眼眸,身形颀长,当真是气宇轩昂、温文尔雅。

 “你就是叶小凡?”男子淡淡开口,神识一扫,惊讶地发现此子的修行资质竟为甲等,眼中闪过一丝惊讶。

 “在下林元青,千鹤派青山院掌尊,你既然通过了考核,便具备了修炼资质,你随我即刻上山,不得有误。”叶小凡便告别众人,在林元青的术法之下随即化为一道长虹飞天而去,留下了一脸惊讶的村民。

 千鹤派分为三大院,分别为青山院、绿水院以及神秘的玄冰院。每个院都有一个掌尊,林元青赫然便是青山院的掌尊!掌尊地位之高,仅次于大长老;大长老之上,又有太上大长老。几乎只是两三次呼吸的时间,林元青已经带着叶小凡来到了千鹤派的青山院。叶小凡两眼一花,

 仿佛上一刻还在村口,下一刻就看到了千鹤派的阁楼。

 “这里是……?”叶小凡一辈子都没有见过如此宏伟的建筑,忍不住开口。

 一想到今后可以在这里修行,更是兴奋,“哈哈,我叶小凡今后一定能突破层层障碍,成为 JavaScript 一代大师!”

 “这里是千鹤派的青山院。”林元青招来仆从,给叶小凡随意找了一个住处,又给了一卷功法,吩咐了几句后,似乎还有其他要事,便立即化为一道长虹离去了。

 叶小凡拿起功法一看,上面赫然写着“JavaScript 基础修炼要诀”几个银光大字,他眼中放出异彩,一想到村中父老乡亲那期盼的眼神,便下定决心,不混出个名头绝不回去!

1.2 第二章 直接量

 叶小凡的住处被安排在青山院西北角的一个房间,虽不宽敞,倒也干净。叶小凡两眼露出振奋的眼神,随便吃了点乡亲们准备的干粮后,就立刻开始打坐修行。编程之修,重在积累,而非资质。资质虽然重要,可是后天的努力更不可缺少。这些道理,叶小凡在还未上山之前就已经熟知!因此,即便是资质平凡,但只要肯下苦功,一样可以修得正果!

 叶小凡虽然具有甲等资质,但他依然不骄不躁,开始从《JavaScript 基础修炼要诀》第一页学起。修炼要诀第一章——直接量。编程世界中的直接量,就是表面上可以见到的数据值。常见的直接量有数字、小数、字符串。修行者利用自身体内的能量,凝结出一个个简单的直接量。叶小凡目前的修为较低,连最基本的学徒境界都没到,体内能量薄弱,经过多次尝试,只能凝练出一些简单的数字,比如 10、20。

 忽然,叶小凡目光一闪,一个字符串在体内形成!叶小凡细细感悟,原来是一个“Hello World”字符串,叶小凡善于观察,立刻发现了字符串和数字的不同。

 字符串的出现必然带着双引号,被很好地包裹住,而数字则是光秃秃的,如 10 或者 20,没有双引号。

 “原来,字符串一定需要用双引号包裹,那么单引号是否可行呢?”叶小凡重新运气,转眼间,一个用单引号包裹的‘Hello World’就出现了。见此,叶小凡大喜,哈哈,原来单引号也可以。

1 "Hello World"
2 'Hello World'

 突然,这两个字符串和数字像是失去了依托,瞬间化为虚无。叶小凡一惊,心道:看来直接创造出来的直接量只是昙花一现,无法持久存在,要是有一个什么东西能把直接量装起来就好了。

1.3 第三章 数据类型

 叶小凡收起心神,继续阅读《JavaScript 基础修炼要诀》,忽然间,他眼前一亮。

 “原来如此,直接量虽然只是昙花一现,但是如果能用 var 定义一个变量,再将它指向那个直接量,就能有保存数据的妙用了!”

 想到这里,叶小凡立即催动功法,定义了一个变量。

var a;

 “成了!”,叶小凡开心地一拍手,心念一动,一个用双引号包裹的“Hello World”字符串凭空出现。这一次,没等字符串遁入虚无,叶小凡就立刻让变量 a 指向了这个字符串。

var a;
a = "Hello World";

 “嗯,有点麻烦,还不如直接合并为一句,先定义变量,然后指向一个字符串,这种操作分成了两步,还是一步到位更好。”就在叶小凡这么想的时候,代码立刻发生了变化。

var a = "Hello World";

 原来这样也可以!

 下一章我们继续学习“数据类型”,学习了数据类型才能更深一步的了解 JavaScript!

1.4 第四章 数据类型

 修行还在继续,随着对要诀理解的深入,叶小凡明白,在编程世界中,刚才的直接量都属于一种数据,如同人有男女之分一样,数据也是有类型的。

 在 JavaScript 中,数据可分为两类,分别为原生数据类型(primitive type)和对象数据类型(object type)。

 叶小凡心念一动,数字“6”立刻浮现在他体内的内存元海中,同时,为了不让数字消失,他还专门定义了一个变量指向这个数字。

var num = 6;

 叶小凡心中已有明悟,这个数字和字符串都属于原生数据类型。那么,还有其他原生数据类型吗?随着心念扫过要诀,一炷香的时间后,

 叶小凡已经若有所悟。原来,原生数据类型包括数字、字符串、布尔值,还有两个特殊的类型:nullundefined

 “布尔值,”叶小凡口中喃喃,“它是一种只有 truefalse 两种状态的类型。”嗯,就好像以前自己在村子里点蜡烛,要么蜡烛亮起来,要么蜡烛熄灭,只有这两种状态。至于 nullundefined,叶小凡略一皱眉,结合秘籍,开始了感悟。

 一炷香的时间过去了,叶小凡猛地睁眼,呼吸都有点急促。

 “我明白了!从用法上来看,nullundefined 都代表了直接量的空缺,如果一个变量指向了其中任何一个,都代表 false 的含义,也表示没有或空的概念。

 而从根本意义上讲,undefined 要比 null 更加严重一点,代表本不应该出现的错误,比如我刚才定义了一个变量 a,但是我没有把任何直接量赋给它,那么 a 就默认指向了 undefined;而 null 不同,有的时候,我需要给某些变量赋值 null,以达到清空的目的。”

扩展内容:

JavaScript 包括直接量和变量。首先说直接量,什么是直接量呢?在 JavaScript 的世界里,直接量包含数值(如 10/20)、逻辑值(true/false)、字符串(如“nihao”)、nullundefined、对象和函数。

 其中,函数也称方法,对象和函数会在之后的章节中慢慢介绍。你暂时可以认为对象是存放数据的一个容器,而函数是应用程序处理某一系列逻辑的一个过程设计。

 null 是一个特殊的关键字,表示没有值;null 也是一个原始值,因为 JavaScript 是大小写敏感的,所以 nullNullNULL 或者其他变量是有区别的。

undefined 是一个顶级属性,它代表某一个变量未定义。同样,undefined 也是一个原始值。

 说完直接量,再来说变量。所谓变量,就是指向了某个直接量或者其他变量的“钥匙”。

 比方说,把一个直接量 true 比作一扇门,然后定义一个变量 flag,最后通过赋值运算符“=”将这个 true 赋值给 flag,这样就完成了一个变量的绑定。

 从此以后,你在别处使用变量 flag,也就相当于使用了直接量 true。简单来说,就是这么回事。

1.5 第五章 基础考核

 叶小凡兴奋起来, 那种钻研了很久之后猛然地豁然开朗的感觉实在是太爽了。趁着心情大好,叶小凡继续钻研《Javascript 基础修炼要诀》,一晃半天时间过去了,叶小凡靠着自己谨慎的性格,刻苦的修炼,有很多问题即便弄懂了也想举一反三。

 这段时间,如果肚子饿了,叶小凡就吃身上带的干粮,渴了就喝清晨的露水。这一幕幕都被那青山院掌尊看在眼里,他心里微微诧异,但更多的是欣慰。

 “此子修行刻苦,虽然目前只是黄衣弟子,可这种修行的忍耐力和执着,哪怕是宗门护法,看到了也要心惊。”

 在千鹤派,弟子根据修为的高低分为黄衣弟子和红衣弟子。红衣弟子之上,便是宗门护法,护法再往上就是掌尊。但凡成为红衣弟子,便会受到宗门的重视,修行资源和待遇也是水涨船高。如果有幸成为宗门护法,那更是一步登天,在每一个大院,宗门护法的权力仅次于掌尊!

 而此刻的叶小凡,还只是最低一级的黄衣弟子。这期间,林元青时不时地会来到叶小凡的住处为他点拨一二。叶小凡在林元青的点拨下,很多之前想不通的难题都迎刃而解,他看向林元青的目光更是多了几分尊敬。

 “叶小凡,下个月就是我们青山院基础考核的日子了!”林元青淡淡说道。

 “基础考核?”叶小凡一愣。

 “没错,在千鹤派,每个月都会有一次考核,如果考核进入前 5 名,除了能获得一笔宗门的奖励,还能收获不菲的贡献点。第一名甚至可以直接进阶为身份更高的弟子!”

 叶小凡自知现在自己是黄衣弟子,一旦晋升成功,就能成为红衣弟子。临走前,林元青看了叶小凡一眼,说:“希望这次你别让我失望!”

 说罢林元青弹指间绘出代码

var container = {
   gongfa:御剑飞行};

 直接脚踏数据化成的剑乘风而起离去了。

 这就是林掌尊吗?居然可以轻轻松松的御剑飞行,这得到了什么级别的强者,还有刚刚林掌尊绘出的是什么代码?

var container={
   };

 似乎是林掌尊留给他的暗示,但叶小凡才刚刚弄明白数据类型,一时间叶小凡的压力增大了许多,毕竟从接触到现在也算是刚刚起步,也没有什么人指导。

 一直到进入千鹤派才有了修炼秘籍《Javascript 基础修炼要诀》,现在距离下个月只有不到二十日的时间,想了想叶小凡接着翻开《Javascript 基础修炼要诀》开始修炼起来,并下定决心定不能让林掌尊失望。

 次日叶小凡准备外出找寻灵感,但对青山院比较陌生,便想着就在周边看看,刚走出住宅看到师兄师姐们在外操练代码,其中一名师兄看到了刚出来的叶小凡便上直径走上前打招呼,

 “你就是叶小凡吧,幸会啊,我叫王志宇”,“啊,你好你认识我吗?”叶小凡被这突如其来的热情所吓到了,

 “我们整个青山院都知道你!”

 “我才刚来青山院几日,你们怎么认识我的啊?”

 “林掌尊说我们青山院新来了一名甲等资质的弟子,名为叶小凡,刚刚就看到你一个陌生的面孔,想必就是你了”此时的王志宇看到有个这么优秀的小师弟便显得异常的兴奋,周围的师兄弟姐妹听闻都朝着叶小凡看去。

 “我…”还没等叶小凡开口就一群人挤了过来,“这就是叶小凡啊”,“哇!甲等资质”,“咱整个青山院也才就大师兄和大师姐是甲等”,一群弟子围着叶小凡议论个不停,'甲等资质原来这么稀有嘛…'叶小凡心想着。

 很快议论随着掌门的到来随之而散,而叶小凡独自前往了青山院附近的一座小山上开始修炼了起来,每天清晨就去傍晚而归。

1.6 第六章 何老

 这一日,叶小凡来到青山院附近的小山上修炼,忽然被一块石头绊 了一跤,正在他自认倒霉地打算爬起来的时候,他在石头缝里发现了一 枚古怪的戒指。戒指通体呈现枯黄色,似是年代久远。

 “摔了一跤,捡到一枚戒指,算是补偿吧,虽然这枚戒指应该也没 什么用。”叶小凡随手拿起戒指,戴在了手上。就在这时,一股神秘的 力量从叶小凡的丹田之处涌了上来,这股力量将他置身于一个奇妙的空 间之中。

 “哈哈哈,小娃娃,没想到我何老被封印了上千年,今天托你的福 终于重见天日啦!咦,你的修为怎么这么低,竟然连幼儿园的水准都没 有!罢了罢了,从今以后就由我来教导你,你最好给我尽快达到大学的 修为,这样我就可以真正地自由啦! ”

 叶小凡被这突如其来的声音吓了一跳,惊慌地喊道:“怎么回事, 你是谁,你想干什么? ”

 “我是何老,几千年前是这片脚本大陆的最强者,只不过不小心遭 人暗算,才被封印到了这枚戒指中。小娃娃,你现在的修为太低了,等 你到了大学境界,才能有力量把我放出来,我也就自由了。小娃娃,你 放心,等你把我放出来后,我绝对不会亏待你。跟着我,包你从今往后 吃香的,喝辣的。哎呀,小娃娃,你干什么?快住手,快住手! ”

 叶小凡虽然谨慎、愿意吃苦,但到底是没有遇到过这么离奇的事 情。戒指里面封印着这片大陆的最强者,这听起来实在是有些天方夜谭 了。

 叶小凡心想:“莫不是妖怪?嗯,对了,一定是妖怪!赶紧扔,赶 紧扔!”

 “这不是真的,我一定是在做梦,妖怪爷爷,你可别来找我啦! ”说 着,叶小凡扬起他那只白嫩的小手,手心里攥着那枚刚捡来的戒指,就 要扔到悬崖下边。

 “小娃娃,你快住手啊,我说的是真的,我可不是什么妖怪,我是 何老啊。哎呀呀,我好不容易等来一个人,这么多年都等下来了,你这 要是一扔,我又要等到猴年马月才能有希望出来了! ”何老这下真的急 了,语气丝毫没有了之前的从容和兴奋,有的只是惊慌和无奈。

 “哼,你还嘴硬,还说你不是妖怪,你当我傻啊。大学境界是传说 中才有的境界,根本没有人可以修炼到。我们宗门的太上大长老,也不 过是高中境界,可即便是这样,他也有只手遮天的能力了,看我不扔了 你。”说着,叶小凡又要扔。

 “哎呀呀,好了好了,我不说了好不好?对了,小娃娃,你来问我 问题啊,在这片大陆上,JavaScript 的功法和心得还没有什么可以问倒 我。”何老都要哭了,真没想到自己好不容易有了重获自由的希望,却 马上就要泡汤,能不能不这么刺激呀?

 叶小凡听到这话,愣了一下,心想难道这是真的?可转念一想,天 知道这个老妖怪在打什么主意,还是扔了好,扬起手又要扔。

 “小娃娃,你可知道对象数据类型? ”何老吼道。

1.7 第七章 对象数据类型

 听到这句话,叶小凡一顿,动作停止了下来。

 对象数据类型在《JavaScript 基础修炼要诀》中只是提了一下,并没 有细讲,它深深地勾起了叶小凡的好奇心。

 “小娃娃,相见是缘,既然你感兴趣,我便教你一教。你且听好, 在 JavaScript 中,数据可分为两类,分别为原生数据类型和对象数据类 型。所谓对象数据类型,是一种复合型的数据类型,它可以把多个数据 放到一起,就好像一个篮子,这个篮子里面的每一个数据都可以看作是 一个单元,它们都有自己的名字和值。”

 叶小凡被何老的话深深地打动了,立刻聚精会神地听起来。

 “现在你相信了,我可还是妖怪? ”

 叶小凡嘿嘿一笑,重新把戒指戴好。

 “小娃娃,你叫什么? ”

 “叶小凡! ”

 “嗯,老夫姓何,你姑且叫我何老吧。小娃娃,我且问你,你可愿意拜我为师? ”

 “弟子愿意!”

 说完,叶小凡将戒指摘下,放在身前的岩石之上,开始行拜师之 礼。何老虽然没有形体,但是却能看得一清二楚,待所有礼节完毕,叶 老这才满意地点了点头。

 “很好,小娃娃,你可听好。对象数据类型比原生数据类型强大了 不少,原生数据类型,比如数值型、浮点型、布尔型等都只能存放一些 直接量,也就是说单一的数据。而对象数据类型却是可以存放一大堆数 据的集合,这些数据都有自己的名字,比如…”

 忽然,叶小凡心头一亮,感觉有清晰的画面传来。

 “我现在没有形体,但是我却可以用意念来给你做演示,小娃娃, 你且看好。现在我给你创建一个对象。”

var container = {
   };

 “创建对象就是用一个大括号吗? ”

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

var container = {
   
  caoyao: "草药",
};

 “小娃娃,你可看明白了? ”

 “前辈,您刚才说对象数据类型里面可以放若干数据,那现在它里 面是不是已经有了一个数据,数据的名字叫作 caoyao,它的值是字符串 类型的草药? ”叶小凡两眼放光,回答道。

 "嗯,小娃娃,看来你的悟性还可以。在这个例子中,caoyao 叫作键,草药叫作值,它是一种键值对的形式。”何老哈哈大笑。

 “键值对,键值对,一个键对应一个值,一个键和一个值就凑成了 一对,键和值中间用冒号。哦,我明白了! ”叶小凡恍然大悟,随即又 问道:“那么,前辈老爷爷,您刚才不是说对象数据类型里面可以放若 干个数据吗?现在里面只有一个,怎么添加第二个呢? ”

 “嗯,小娃娃,这个问题问得很好。你且听好,如果你想要在一个 对象里面添加新的数据,则只需要添加一个逗号,然后写上新的键值 对就行了。”

var container = {
   
  caoyao: "解毒草",
  feijian: "乌木剑",
};

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

var container = {
   };
container.caoyao = "解毒草";
container.feijian = "乌木剑";


“虽然我不太明白这里面的玄妙,但是我大概猜到了 caoyaocontainer 这个对象的属性,似乎就是把刚才写在“{}”里面的东西又在外 面重新写了一次的意思吧。”

 "嗯,孺子可教,container.caoyao 中的点(.)就是对象访问属性的 意思,正因为 caoyaocontainer 的属性,所以 container 才可以用点

 (.)O 对象包含若干数据,每个数据都是一个键值对,这些数据也叫 作对象的属性。那么键值对中的键就是属性名称,键值对中的值就是属 性值。”

 “我明白了,但是我还有一个疑问,如果对象用点(•)访问一个根 本不存在的属性会怎样呢? ”叶小凡问道。

 “好问题,就比方说刚才的例子,如果我直接访问一个根本不存在 的属性 danyao,那么会怎样呢?小娃娃,看好!”

var container = {
   };

container.caoyao = "解毒草",
container.feijian = "乌木剑"
console.log(container.danyao);
// 注意:丹药这个属性是不存在的结果是undefined。

请添加图片描述

 "我明白了,danyao。这个属性不存在于 container 对象中,因此它是 未定义的,得到的结果就是 undefined! ”叶小凡惊呼。

1.8 第八章 对象的取值

 “小娃娃,我现在问你,如果我不知道对象的某个属性叫什么名字,那么又该怎么访问对象中对应这个属性的值呢?”何老笑呵呵地问道。

 “什么什么,事先都不知道对象的属性名称,怎么可能访问得到啊?

 这我可不知道,我想这是不可能的。”叶小凡想了想,赶紧摇头。

 “这样吧,我换一种说法。我想你现在已经知道对象可以通过一个点号(.)访问其中的某一个数据了。”

 说着,何老随手一挥,一个对象就生成出来了。

var container = {
   
  caoyao:"解毒草",
  feijian:"乌木剑"
};

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

container.caoyao

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

 说着,何老又随手一挥,定义了一个变量。

var container = {
   
  caoyao:"解毒草",
  feijian:"乌木剑"
};
var prop = "caoyao";

 “这……”叶小凡也陷入沉思,过了许久,缓缓说道:“直接点 prop 肯定不行,那样的话,container 调用的肯定是一个叫作 prop 的属性。而事实上,container 对象里面是没有叫作 prop 的属性的,得到的结果肯定是 undefined。”

 听到这里,何老向叶小凡投去了赞赏的目光,继而说道:“你的分析没有错,这里不能再用之前的那种方法了。小娃娃,你且看好!”话音刚落,何老就打出了新的代码。

var container = {
   
  caoyao:"解毒草",
  feijian:"乌木剑"
};
var prop = "caoyao";
console.log(container[prop]);

请添加图片描述

 “这!”叶小凡惊呼。

 看着叶小凡惊讶的样子,何老似乎有些得意。

 “小娃娃,这就是我教你的新技巧,对象不仅可以用点号(.)访问它的一个属性,也可以用中括号([])。如果用中括号,里面就允许再写一个变量。当然了,写字符串也是可以的。”

 似乎是担心叶小凡理解不了,叶老又补充了一行代码。

console.log(container[prop]);

请添加图片描述

 过了好一会儿,叶小凡才回味过来,说道:“我明白了,如果事先属性的名称未知,或者调用的属性是动态变化的,就不能使用点号了。使用中括号可以最大程度地提升对象调用属性的灵活度!”

1.9 第九章 循环遍历的奥妙

 “小娃娃,我且问你,可否知道循环遍历的法术? ”

 “循环遍历不就是 for 循环或者 while 循环吗,这有何难? ”

 说着,叶小凡就随便打出了一段代码。

for(var i= 0;i < 10;i++) {
   
  console.log(i);
}

请添加图片描述

 “嗯,你使用的是 for 循环。如果你希望一遍又一遍地运行相同的代 码,并且每次的值都不同,那么使用循环是很方便的。

 就好像你刚才 写的,你想要重复使用 console.log 输出一个东西,使用 for 循环的确可行。那你可知 while 循环? ”

 叶小凡想了一下,说道:"感觉 while 循环和 for 循环差不多吧,就是 它们在语法上稍微有点区别。”

 说着,叶小凡随手打出一段代码,将刚才的 for 循环改写成了 while 循环。

var i = 0;
while(i < 10){
   
  console.log(i);
  i++;
}

请添加图片描述

 “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(var i=0;i < 10;i++) {
   
  console.log(i);
}

请添加图片描述

 “没错,不论是 for 循环还是 while 循环,循环体就是这个部分,这个 部分里面的代码是需要被多次执行的。

 现在我再给你说说最后一个语 句“i++”,这个语句是在刚才我们所说的大括号里面的代码被全部执行 之后才会被执行的。

 一般来说,上面这段语句里面的代码可以控制循环 变量 i 自增一个单位或者自减一个单位。”

 “自增我知道,无非就是 i++或者 ++i,为什么要自减呢? ”

 “关于这个问题,是和第 2 个语句相关联的。比如你刚才写的代码。”说着,何老指向叶小凡刚才写的代码。

for (var i=0; i < 10; i++) {
   
  console.log(i);
}

请添加图片描述

 “你的循环判断条件是当 i < 10 的时候才会进入循环体,也就是后面 用大括号扩起来的部分,对吧? ”何老问道。

 “没错,最开始的时候 i=0,第一次循环中 i 自然是小于 10 的,于是就 进入了循环体,像这样。”说着,叶小凡催动内力,让这段 JavaScript 代 码开始执行。

 当执行到这一行代码的时候,叶小凡特意让代码停了下来,调试代码。

请添加图片描述

 “嗯,很好,我且问你,现在代码停在了这一行,如果我再往下执 行一步,那么会到第 4 行还是停留在第 3 行呢? ”何老问道。

 “那还用问,肯定是跳到第 4 行啦。”叶小凡十分肯定地说道。

 “先别着急下结论,走一步试试。”何老对叶小凡说道。

 “试就试。”说着,叶小凡就用 debug 走了一步。

请添加图片描述

 “这是怎么回事

  • 56
    点赞
  • 265
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王十四兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值