js考试试题有不明白的

来源:1-1 课程简介

weixin_慕的地2217823

2022-12-14 11:48:37

https://img.mukewang.com/climg/6399477e0957c5e017360753.jpghttps://img.mukewang.com/climg/63994788090bc07417160673.jpghttps://img.mukewang.com/climg/63994791095e59c116950612.jpg

写回答

1回答

好帮手慕久久

2022-12-14

同学你好,解答如下:

1、第13题:涉及到预解析知识点。    

1)getNum()这句代码,是调用全局中的getNum。那么就先看全局中,getNum相关内容:

getNum()执行时,Foo中的代码并没有执行,所以Foo中的内容不用考虑:

https://img.mukewang.com/climg/63994a080907f20008750469.jpg

还可以进一步简化代码:

https://img.mukewang.com/climg/63994a4f09c42dcd08130534.jpg

代码执行之前,先预解析,变量声明函数声明提前,赋值保留原地:

https://img.mukewang.com/climg/63994a7c09e96a5b06520283.jpg

就相当于如下形式:

https://img.mukewang.com/climg/63994ab30932189407110351.jpg

所以getNum的值是function () { console.log(4); },因此调用getNum会打印4。

2)继续分析 f.getNum(),该句代码是调用实例的getNum方法,与如下代码有关:

https://img.mukewang.com/climg/63994b22093283d208440564.jpg

Foo内两个getNum,第一个是全局变量getNum,第二个是实例自身上的getNum:

https://img.mukewang.com/climg/63994b8a0939092709150578.jpg

 Foo.prototype.getNum是实例原型上的getNum:

https://img.mukewang.com/climg/63994bf70993610e06550058.jpg

对于实例而言,调用getNum时,先找自身上的getNum,所以打印2。

2、第14题:涉及到作用域。

fn1、fn2的逻辑解释是一样的,以fn1为例,fn1就是out中,返回的函数inner:

https://img.mukewang.com/climg/6399595d0944371b05120332.jpg

调用out时,out会形成一个函数作用域,每调用一次out,就会形成一个新的作用域,该作用域中有一个变量num和一个函数inner:

https://img.mukewang.com/climg/63995b120987fa7707830266.jpg

调用fn1时,就相当于调用inner(inner在out形成的作用域中),由于inner会使用变量num,所以会沿着作用域查找num,即会找到out作用域中的num:

https://img.mukewang.com/climg/63995a710987ed2f07790404.jpg

因此第一次调用fn1,num会加1,变成2。

第二次调用fn1,还是调用上图作用域中的inner,inner中会继续访问之前的num:

https://img.mukewang.com/climg/63995b8e098e5bf909020414.jpg

所以num会在2的基础上加1,变成3。所以两次调用fn1,会打印2、3。

fn2的过程同上:

https://img.mukewang.com/climg/63995bf509d399f606100406.jpg

3、第15题比较难,先分析一下兔子的对数:

第一个月1对,第二个月1对,第三个月它们生了1对,共2对。

第四个月又生1对,共3对。

第五个月,又生了1对,且第二对兔子已经长到第三个月,生了1对小兔子,共5对。

第六个月,第一对兔子生了1对,第二对生了1对,第三对兔子已经长到第三个月,也生了一对,共8对。

形成的数字规律如下:

1,1,2,3,5,8,13,21……(单位:对)

以上就是斐波拉契数列。

找一下数字中包含的数学规律:后面的一个数是它前面两个数之和。所以第n个月兔子的对数=第n-1个月的兔子对数 + 第n-2个月的兔子对数,即func(n - 1) + func(n - 2),本题答案为A。

祝学习愉快!

0

0 学习 · 17877 问题

查看课程