个人资料

跳过导航链接首页 > 博客列表 > 博客正文

[JavaScript百炼成仙]这是什么鬼才写出来的东西啊

分类:
叶小凡收起心神,继续阅读“JavaScript基础修炼要诀”,忽然,他眼前一亮。

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

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

var a;

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

var a;
a = "Hello World";

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

var a = "Hello World";

原来这也可以!

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

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

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

var num = 6;

叶小凡心中已有明悟,这个数字和字符串都属于原生数据类型。那么,还有其他原生数据类型吗?

心念扫过要诀,一炷香的时间,叶小凡已经若有所悟。原来,原生数据类型包括数字,字符串,布尔值,还有两个特殊的类型 – null和undefined!

“布尔值”,叶小凡口中喃喃,一种只有true和false两种状态的类型。

嗯,就好像以前自己在村子点蜡烛,要么蜡烛亮起来,要么蜡烛熄灭,只有这两种状态。

至于null和undefined,叶小凡略有皱眉,结合秘籍,开始了感悟。

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

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

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

◇ 拓展阅读

JavaScript包括直接量和变量。首先说直接量,什么是直接量呢?在JavaScript的世界里,直接量包含数值(10/20)、逻辑值(true/false)、字符串的值(“nihao”)、null、undefined、对象和函数。其中,函数也被称为方法。对象和函数会在之后的章节中慢慢介绍。暂时你可以认为对象是存放数据的一个容器,而函数是应用程序处理某一系列逻辑的一个过程设计。

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

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

说完了直接量,再来说变量。所谓变量,就是指向了某个直接量或者其他变量的钥匙。比方说,把一个直接量true比作一扇门,然后定义一个变量flag,在通过赋值运算符=将这个true赋值给flag,这就完成了一个变量的绑定。

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

叶小凡兴奋,那种钻研了很久之后猛地豁然开朗,感觉实在是太爽了。乘着心情大好,叶小凡继续钻研“JavaScript基础修炼要诀”,一晃半天时间过去了。叶小凡性格谨慎,也非常刻苦,有很多问题,即便弄明白了,也忍不住要举一反三。

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

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

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

这期间,林元青时不时地会来到叶小凡的住处,点拨一二。叶小凡在林元青的点拨下,很多之前想不通的难题,都迎刃而解,看向林元青的目光,更是多了几分尊敬。

“叶小凡,下个月就是我们青山院基础考核!”林元青淡淡说到。
“基础考核?”叶小凡一愣。

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

叶小凡自知现在是黄衣弟子,一旦晋升成功,就能成为红衣弟子。临走前,林元青看了叶小凡一眼,道:“希望这次你别让我失望!”。
这一日,叶小凡来到青山院附近的小山上修炼,忽然,被一块石头绊了一跤。正在他自认倒霉打算爬起来的时候,在石头缝里边发现了一枚古怪的戒指。戒指通体呈现一种枯黄色,似有一些年代悠久之感。

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

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

叶小凡被这突如起来的声音吓了一跳,惊慌地喊道:“怎么回事,你是谁,你想干什么?”
“我是叶老,几千年前是这片脚本大陆的最强者,只不过不小心遭人暗算,才被封印到了这枚戒指中。小娃娃,你现在的修为太低了,等你到了大学境界,才能有办法把我放出来,我也就自由了。小娃娃, 你放心,你把我放出来后我绝对不会亏待你的。跟着我,包你从今往后吃香的喝辣的。哎呀,小娃娃,你干什么,快住手,快住手!”

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

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

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

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

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

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

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

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

对象数据类型,这在JavaScript基础修炼要诀中只是提了一下,但是并没有细讲,这个对象数据类型一直以来都深深地勾起了叶小凡的好奇心。

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

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

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

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

“小娃娃,你叫什么?”

“叶小凡!”

“嗯,老夫姓叶你也姓叶,确实有缘。小娃娃,我且问你,你可愿意拜我为师?”

“弟子愿意!”

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

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

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

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

var container = {}; 

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

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

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

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

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

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

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

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

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

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

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

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

“嗯,孺子可教,container.caoyao,这个点就是对象访问属性的意思,正因为caoyao是container的属性,所以container才可以用点。对象包含若干的数据,每一个数据是一个键值对,这些数据也叫作对象的属性。那么键值对的键,就是属性的属性名称。键值对的值,就是属性的属性值。”

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

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

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


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

继续看->:https://blog.csdn.net/weixin_39570751/article/details/120622228





songshizhao
最初发表2021/11/13 0:48:17 最近更新2021/11/13 0:48:17 16
为此篇作品打分
10
   评论