几句话编程入门(已完结)

有点没搞懂。这里的b = a++是不是等价于b=a, a=a+1?否则感觉得不到a=7、b=6的结果。不知为何我总觉得赋值的优先级应该低于其他所有的运算符,所以多少感觉有点违和。

这个理解是正确的。

这个感觉也是正确的。

a++ 作为一个整体去看,那么这个整体的值,是没有 +1 的值。但是在这之后,a 自增了 1。

可能这样反复解释还是不能够深刻的理解,那我就打个比方:

这就像我们一边拿取东西,一边计数。于是就会有两种习惯:

  • 拿到手里一个,数一个数;
  • 数一个数,拿到手里一个

这两种方法都可行,但是一定要确定当前使用的是哪一种方法,要不然就不知道当前属的这个数字对应的是前面所拿的那个东西,还是后面所拿的那个东西。

  • a++ 是先使用一下这个变量,然后给他记一个数。
  • ++a 是先记一个数,然后再使用这个变量。
1 Like

OK,大致理解了,非常感谢。

0031 一点日常

我们来想象一个场景,新学期开学了,老师叫几个同学帮忙搬课本,你是其中之一。来到了办公室,你站在课本堆前面,等待着老师的指示。其实你当然知道要搬这些课本,但是你不知道要拿多少本。所以要等到老师告诉你班里一共有多少人,或者我们一共需要多少本。然后你数出对应的数量搬走。

那么再聚焦其中的细节,老师说咱班上一共 36 人,所以你数出 36 本来搬走就好。你就开始数,拿起一本放在怀里,并且记下这是一本;再拿起一本放在怀里,并且记下这是第二本……直到第 36 本结束搬走。

这里拿起书放到怀里,以及计数增加一,是重复的操作。可以认为每次所做的都是同样的内容。我们重复不断的去进行这样的操作,直到拿到了足够数量的课本。

但怎么判断我们拿到的课本数量足够呢?其实我们在每次计数结束之后,在潜意识中都会做一个判断,就是当前拿到的数量和我预期的数量之间是否相等,如果相等,那么结束。或者也可以换一个说法,如果当前的计数小于我预期的数量,那就是没有拿够,我还要继续拿下一本。

这是一个很普通的事情,显然大家都能够听懂。只是每次计数的同时会做一个判断,这个细节很容易被我们忽略掉。但电脑很笨,如果我们向电脑去描述这件事情,就要把这些细节都讲清楚。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

1 Like

0032 懒惰如我

那么如何用代码去表达前面的事情,当然我们可以用判断,我也很建议大家自己尝试去书写一下,虽然我们没有学习代码,但是简单的去书写一下这个流程是没有问题的。大概就是不断的 if …… else if ……

如果只是简单的判断 1、2、3,那么这样写问题也不太大。可如果像前面所说的那样数出 36 本来,你会发现你一直在写非常类似的代码。

当然你也可以干脆就不做判断了,直接把拿书这个操作写 36 遍,这会非常符合我们的直觉,但我想你也认为这一定不是一个好方法。因为如果这个数字非常大呢,那么变的就不可操作了。

所以,作为一个程序员,是不可能让一件事情枯燥的重复做上三次以上的。如果确实有这样的需求,那么我们总要想一些偷懒的办法。

其实说来说去,我们要做的事情就是:如果我们怀里的书少于预定的数值,就再拿一本,并且对于怀里拥有书的数量 +1。然后不断的去重复上面的操作。那么我们用不规范的代码去表达一下:

books_in_hand = 0
while (books_in_hand<36){
    拿一本书放到怀里
    books_in_hand++
}

这个结构和我们前面学的 if 语句非常像,基本上也就是那样执行的,如果小括号里的条件成立,那么就执行后面的代码段。唯一的区别是:执行完这个代码段以后,要回来重新进行判断,如果条件成立,再次执行代码段……如此往复,这就叫做循环。

直到小括号中的条件不成立,才跳过这部分,开始往下执行。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

3 Likes

0033 换一种方式表达

在循环中要注意的问题是,条件不能够一直处于成立。因为条件一直成立,这个循环就无法结束,也就成了死循环。所以前面的代码中,在每一次循环里都会对于计数进行增加,这样他总有不小于预定数值的时刻,循环就被结束了。

但在有的时候,可能这个条件不是那么好书写,或者一些其他的原因,我们会直接书写一个死循环。但是在循环之中会设定打破这个循环的条件。那么我们依然以前面的例子作为演示:

books_in_hand = 0
while (true){
    拿一本书放到怀里
    books_in_hand++
    if(books_in_hand>=36){
        break
    }
}

我直接告诉程序这个条件为真,在这个地方可能有些人会习惯去写 while (1),也完全没有问题,这样会简短一些。数字类型的 1 转换为布尔型就变成了 true,所以两种写法是等效的。

总之条件为真,这个循环会一直进行。但每一次循环到最后都进行了一个判断,如果现在手里的书大于等于 36 本,就打破这个循环(break)不再进行了。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

3 Likes

0034 换一种思路

前面我们来到办公室,面对着课本,老老实实的等待老师下达下一步的指示,然后才进行操作。

但是总有那些比较活跃,跳脱,积极……的学生,还没等老师说话,就拿起了一本。

但仔细思考这个思路也完全没有毛病。如果我们单纯的说理论中的所有可能性,那么老师要求拿的数量可以为 0,就是一本儿都不需要拿。如果真的发生这种情况,老老实实的孩子没有做任何的无用功。当然莫名其妙的到办公室溜达一趟,这件事情我们就忽略不计了。至少那些活跃的孩子拿起来一本还要再放回去。

但事实上显然我们知道,到办公室搬书这件事情,老师要求我们拿的数量是不可能为 0 的,也就是说要拿的数量肯定要大于等于 1。那反正肯定要拿一本,我先拿在手里再等下一步的指示,也是非常合理的,而且效率也更高。

对这个思路的描述就是:我拿一本书放在怀里,对我拥有书的数量 +1。然后判断一下这个数量和老师的要求是否相等,还不够那就继续重复上面的操作。

前面讲的方法是先判断,再执行;这次的思路是先执行,再判断。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

1 Like

0035 再写一下

books_in_hand = 0
do {
    拿一本书放到怀里
    books_in_hand++
} while (books_in_hand<36)

不管三七二十一,我先做一下大括号里的操作,然后再做后面的判断,如果后面那个条件达成了,那么回来继续进行循环。

然后我们来理解一下差异。前面的写法,无论老师给出的数量是怎样的,我们拿到的都是准确数量的书籍。而这次的写法是先拿了一本,然后再去判断数量,如果不符合条件就不继续拿了。

那如果老师要求拿的数量真的是 0,会发生什么情况呢?拿了一本,然后发现手头的数量 1 不小于 0,所以不继续拿了,但手头还是有了一本啊,所以这个数量和老师的要求就不相符了。

所以一般来说第一种写法就可以解决我们遇到的各种问题,而且也比较容易符合我们的预期。但既然存在后面这种写法,我们也就顺便介绍一下。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

2 Likes

0036 循环的特征

要进行一个循环,首先我们要有需要循环去做的事情,对照前面的例子,就是不断的拿一本书。

需要有一个控制循环的条件,达成条件继续循环,无法达成条件就跳出循环。就是书有没有拿够。

控制循环的条件是否达成会随着循环的不断执行而发生变化,这样才能使得循环执行一段时间之后,自己终止。为什么会发生这样的变化呢?

我们有一个确定的目标,需要拿多少本书。

有一个随着循环不断进行而发生变化的变量,当前手里面有多少本书。

那么整理一下刚才所说的内容:设定一个变量,它会随着循环不断变化;不断判断这个变量和目标之间的关系,如果没有达到目标就继续循环;在每一次循环中,完成我们计划进行的工作,并且对前面设定的变量进行修改。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

1 Like

0037 另一种格式

还是同样的例子,我们换一种写法:

for(books_in_hand = 0; books_in_hand < 36; books_in_hand++){
    拿一本书放到怀里
}

对应前面的理解,大概就能够猜出这段代码是如何执行的.

这里小括号中有三个语句,我用分号进行了分隔。

第 1 句是对变量的初始化,它只在循环开始时执行一次;

第 2 句是控制循环的条件,如果这个条件成立,那么就执行后面的代码段。

第 3 句是每一次循环之后对于变量的修改。

这样我们就把对于这个循环的控制部分都放进了这个小括号之中,而代码段里就单纯的是我们要循环的内容。显然这个格式更加清晰,所以这种写法也更加的常用。

使用 while 的写法最容易丢失的一个地方,就是对于变量的修改。丢失对于变量的修改在语法上并不会出现错误,但却会直接产生一个严重的后果,就是死循环。

而上面这种写法,显然你要把格式填写完整,否则在语法上就会报错,不太容易出现因为缺少对变量的修改而导致的死循环。

对于循环,选择一种自己认为最能够理解的,并且能够很好掌握的方法作为常用方法就可以。因为只要掌握一个方法,基本上可以应对大部分问题了。其他的方法作为了解,在遇到特殊情况的时候,能够想到相关的方法,然后去查阅具体的使用就 OK。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

3 Likes

0038 类型的转换

前面我们说过数据是具有类型的,这就好像人是具有不同的职业的。我们在使用一个数据的时候,应该在内心明确的了解这个数据的类型是什么。

有些一些编程的语言需要非常明确的确定数据的类型,就比如 C 语言。那么其中的数据如果需要进行类型的转换,也要有明确的操作,才能够改变这个数据的类型。

也有一些编程的语言,它的数据类型是模糊的,就比如 JavaScript。对于一个变量没有明确的去说明类型,你赋予它字符串的值,那它就是个字符串,赋予它数字的值,它就是一个数字。在进行计算时,如果参与计算的数据类型不同,它会尝试自动的进行类型的转换,使的类型一致,然后进行计算。对于这样的语言,一般编程新人是会觉得非常开心的,因为少了分辨类型这个巨大的麻烦。但事实上无论使用的是怎样的语言,在内心都必须明确当前数据的类型,这是非常重要的。

数据的转换需要注意到一些方面,比如能不能转换。"123",我们知道这是一个字符串,因为它使用引号进行标记了,但如果说把它转换成为数字类型,显然我们知道这是可行的。但如果是这样的字符串呢:"嘿,我是一个字符串",显然它是不能够被转换为数字的。

自动转换的结果是不是和我们预期的相同。"123"+456,这样的计算应该得出怎样的结果?这要看程序如何进行类型的转换,如果它把两者都转换为数字,那么结果应该是 579,就是把两者相加。但如果程序把它们都转换为了字符串,字符串的相加可能是(这个在不同的语言下是有区别的)将字符串连接在一起,那么得到的结果就是:"123456"。如何知道程序对于类型自动转换的规则?这个有人列出了许多具体的都有关系,但是我记不住,所以我倾向于在使用的时候实际去运行尝试一下,反正随手写一个类型转换的小案例,也就一句代码,运行一下就可以得到明确的结果。

然后有许多类型可以转换为布尔型,大概的规则是存在即为真,不存在即为假。所以 0 为假,1 为真。当然 2 也为真……可以以此类推,但我举例不过来。不过一般情况下,如果我们想设置一个为真的条件,简单书写的话都会使用数字 1,而不是其他数字。就像我们前面所演示到的那样。因为如果把布尔型转换为数字,那么得到的结果就是 0 和 1。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

1 Like

0039 数组

如果老师让我们统计全班学生的名字,这是一个很简单的问题,但是如果我们放到编程中去思考,每一个姓名就是一个数据,对,它的类型是字符串。那么我们把这些数据储存起来就需要……总之很多的变量。这问题就变得很麻烦了,我们要建立变量并给它赋值,而在需要使用的时候还要找出对应的变量,然后提取它的值。这是全班学生的名字,那如果是全校学生的名字呢……

我们在实际生活中是怎么去进行统计的?有一个表格,前面是编号,比如一般会用学号,后面是对应的姓名。在使用的时候就根据学号去查找姓名。

我们在程序中也有一个类似的概念,就是数组,简单解释就是一组数据。那么根据我们前面的经验,一组数据可以不止一个,但也可以是一个,或者甚至没有,是 0 个。总之就是把一组数据打包成一个整体。

那么直观一点,我们先在代码中去举一个例子:

names = ["张小虎", "王小红", "李小二", "猫小兔"]

这样用方括号来包含一系列的数据,数据之间用逗号进行分隔(具体的书写格式参照你所使用的编程语言)。上面列出的是 4 个学生的姓名,但是我把他们作为一个合集放在了一个变量之内。这是一个简单普通的数组。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

1 Like

0040 一些特征和用法

先把上一次的例子放在前面:

names = ["张小虎", "王小红", "李小二", "猫小兔"]

数组具有一个属性就是它的长度,用来说明它里面包含几个数据,所以 names 的 length 为 4。那么获取属性的值的方法为:names.length ,我把其中的点(.)读作“的”,就很容易理解了。

数组是具有顺序的,所以每一个数据都具有一个序号,你可以认为是他们的学号,总之就是按顺序排列的编号。这里需要注意的是:序号从 0 开始计算。就像笑话中说的那样,程序员数数是从零开始的。

所以“张小虎”这个数据的序号是 0。而数组中最后一个数据的序号为数组的长度减一:names.length - 1

当我们需要取用某个数据的时候就这样写:names[2],就是说这个数组里序号为 2 的那个数据,也就是其中的第 3 项,在这里得到的就是“李小二”。

这里的序号可以使用变量代替:

a = 2
names[a]

数组中可以储存各种类型的数据,所以其中的某一项也可以是一个数组,这就形成了嵌套。如果数组中的每一项都是数组,这就形成了一个多维数组,常用的有二维数组和三维数组,这些使用起来就比较考验空间想象能力了。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

1 Like

0041 遍历

如果我们把前面所学习的循环和数组做一个结合,就可以很轻松的取出数组中的每一项。

names = ["张小虎", "王小红", "李小二", "猫小兔"]
for(i=0; i<names.length; i++){
    names[i]
}

因为变量 i 是在不断变化的,而且它是从 0,不断的增加 1,一直到 names.length-1,就正好把数组中的所有序号都列举出来了。这样就取出了数组中的每一项。这个过程叫做遍历,就是把数组中的每一项都来一遍,都经历一次。

如果举一反三的话,那么我们还可以反过来遍历:

names = ["张小虎", "王小红", "李小二", "猫小兔"]
for(i=names.length-1; i>=0; i--){
    names[i]
}

然后一些语言下对于数组有特殊的遍历方法,就是书写起来会更加简单。不过上面这种直接利用循环语句的遍历方法是最基础的。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

1 Like

0042 研究点儿啥

我们来随便研究个东西,什么都行,你闭眼抓起一个手边的东西和我一起研究就好。比如我现在拿出了一只自动铅笔。

那么这就是我要研究的对象。如果你找不到要研究什么就是找不到对象……(虽然听起来像是烂梗,但并不是

那如果我要向你介绍这支笔,就要描述一些你对它所关注的东西,当然不可能面面俱到,那么只要说清楚我们所需要的内容就好了。

它的颜色是蓝色的。

它的质地是金属的。

它的价格是一块钱。

它使用铅芯的粗细是 0.7 的。

……

显然这些你都能够听得懂,那么这是这只铅笔所具有的一些属性,这句的说法确实有点拽文了,但也完全在理解范围之内。

然后我们开始使用它,它可以用来写字;按动一下尾部,它还可以向前出铅;按住尾部还可以把铅芯再塞回去……用过自动铅笔的小伙伴应该都理解。

那么上面算是它的一些使用方法,就是它能够去做的事情。比如我们使用出铅这个方法,使它前部的铅芯长度增加。

然后它还会有一些特殊的事件,比如没有铅了,这个时候我们就要装入新的铅芯;比如铅芯折断了,这个时候我们就要使用出铅这个方法,使它前部的铅芯长度增加。

那么上面所说的没有铅了,和铅芯折断了,并不是这支自动铅笔做了什么,而是它发生了什么,并且这个事件的发生其实是一个时间点。

那么你用其他东西去进行研究,也可以举出类似的例子。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

1 Like

0043 由此进行推广

我们研究一个对象,它可以具有属性,用来说明是怎么样的;具有方法,来说明它可以做些什么;具有事件,来说明发生了什么。

但这些并不一定要全都存在,就像我们前面所说的,不可能面面俱到,所以只是关注我们需要用到的部分就好。

就比如我们前面登记姓名的例子。把每一个同学作为一个研究的对象,这时候我们关注的只有他的姓名属性。如果老师要求登记姓名和年龄,那么我们就关注姓名和年龄两个属性。

前面我们介绍了一只自动铅笔。但可以说差不多所有的自动铅笔都和它非常的类似,当然可能颜色质地等有区别,但终究是大同小异的。我们可以说这都是同一类物品。所以可以有一个类的概念,我们从这个类去创建一个特定的对象,那么这个对象会继承这个类所具有的特点。就是我单独拿出一只自动铅笔来,这是特定的对象,但它具有自动铅笔这个类所具有的普遍特征。说的抽象一点就是对象继承了这个类的特征。

这些概念非常的不严谨,在不同语言下甚至在相同语言的不同版本下,也会有不同的表达方式。但思路上都是相似的。

我们后面创建的对象看起来非常普通,但其实它也继承了基本对象的方式方法,否则我们又如何去操作它呢。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

1 Like

0044 对象

cat = {
    name: "咪咪",
    color: "Black",
    age: 3,
    male: true
}

现在把猫作为一个研究对象,很显然这是特定的某一只猫。他的名字叫做咪咪,颜色是黑色的,三岁了,是个男孩子。其实我不讲,你也大概能够读出这些信息。

对象是使用一个大括号来进行标记,里面标记了每一个属性所对应的属性值,属性之间用逗号进行分隔。属性和属性值之间使用冒号。这种标点的使用方式和我们自然语言是基本一致的,所以也很容易理解。

当我们需要使用其中某一个属性的时候,像下面这样去调用:

cat.name

我习惯把中间的点(.)读作“的”,猫的名字,这就很容易理解了。

也可以换一种方式去书写:

cat["name"]

注意这时候中括号里面放的是一个字符串,来说明要使用的属性的名称。这种写法的好处是中括号里的内容可以使用变量去进行表达:

n = "name"
cat[n]

那么使用点的方式就没有办法用变量来替代属性的名称。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

1 Like

0045 一些细节

cat = {
    name: "咪咪",
    color: "Black",
    age: 3,
    male: true
}

变量属性的名称其实是一个字符串,那么从前面的调用中,我们也可以看出来这一点。只是在这里,因为它必然是字符串,所以一般情况下我们会省略它的引号,当然你也完全可以给它写上,虽然没什么必要。另外在某些特定的情境下,确实需要给这些属性名写上引号。

属性的值可以是各种类型,比如上面举例中有字符串,有数字,有布尔型。当然它还可以是其他类型的数据,比如数组,也比如对象。

我们会发现对象的调用方式有一点像数组。其实应该反过来讲,数组是一种特殊的对象。它就是把属性的名称确定为一系列数字了。

当然细节上的区别还是有的,毕竟数组和这些基本的对象所继承的原型是不同的。所以它们具有的方法什么的也不相同。

如果你搞不清就先记住:数组显然是具有顺序的;而对象这些属性,就很难说谁应该在前面,谁应该在后面,所以它是不具有明确顺序的。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

2 Likes

0046 关于遍历

我们遍历数组时,其实是拿到了这个数组所有的序号,然后再逐个取出对应的值。所以在遍历对象时应该先拿到这个对象中所有的属性名,然后再逐个取出对应的值。

大概的理论就是这个样子,不过各种语言都会提供一些专用的方法,因为语言之间会有一些区别,所以在这里我不做举例,避免先入为主。

当然根据需求不同,我们可能会遍历对象中的所有属性名,也可能遍历所有属性的值,当然还可能两者都要。

我们知道无论是对象还是数组,它内部可以储存的数据是各种类型的,那么假如里面储存的数据又是一个对象或者数组,这时候我们可以对类型进行判断,然后决定是否需要进行更深层的遍历。当然这只是一个思路,因为这一次的内容实在太少了,所以凑一下字数。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

1 Like

0047 遍历的思路

我们遍历数组时,其实是拿到了这个数组所有的序号,然后再逐个取出对应的值。所以在遍历对象时应该先拿到这个对象中所有的属性名,然后再逐个取出对应的值。

大概的理论就是这个样子,不过各种语言都会提供一些专用的方法,因为语言之间会有一些区别,所以在这里我不做举例,避免先入为主。

当然根据需求不同,我们可能会遍历对象中的所有属性名,也可能遍历所有属性的值,当然还可能两者都要。

我们知道无论是对象还是数组,它内部可以储存的数据是各种类型的,那么假如里面储存的数据又是一个对象或者数组,这时候我们可以对类型进行判断,然后决定是否需要进行更深层的遍历。当然这只是一个思路,因为这一次的内容实在太少了,所以凑一下字数。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

2 Likes