本篇文章是js基础练习题第十三天的答案及解析部分,纯题目部分请移步js基础练习题 第13天
正文
1.js有几种基本数据类型?
答案:在js中一共有7种基本数据类型,分别是number
, string
, boolean
, null
, undefined
, symbol
, bigint
关于symbol
的介绍,可以参照MDN symbol,关于bigint
的介绍,可以参看MDN bigint
2.js有几种引用数据类型?
答案:在js中一共有3种引用数据类型,分别是object
、array
、function
3.简述基本数据类型与引用数据类型的区别。
从数据存储上来说,基本数据类型的名(key)和值(value)都存储在栈内存中;而引用数据类型的名存在栈内存中,值存在于堆内存中,栈内存会提供一个引用的地址(指针)指向堆内存中的值。
4.深拷贝与浅拷贝有何区别?如何利用js实现一个简单的深拷贝,试给出你的代码。
浅拷贝是对栈内存中的值(即指针)的拷贝,拷贝前后对象指向的是堆内存中的同一个值;深拷贝是指在堆内存中开辟一个新的内存专门来存放拷贝值,此时拷贝后的值与原值就是相互独立、互不影响的。
1 | // 可以使用递归去复制所有层级属性 |
使用复制代码时,请将代码中的中文双引号替换为英文引号。
5.
1 | var a = 10; |
obj.b
= __________,obj.foo()
的返回值为 __________,答案:50、30
1 | var test = obj.foo; |
test()
的返回值为__________,obj.bar()
的返回值为__________,obj.baz()
的返回值为__________。答案:10、10、undefined
关于js中this
的讲解,可以参照这波能反杀的个人博客。
6.实现一个add方法,使计算结果能够满足如下预期:
add(1, 2, 3) = 6
add(1, 2, 3)(4) = 10
add(1)(2)(3)(4)(5) = 15
答案:如下方代码段所示
1 | const add = (…args) => { |
7.说说你了解的
Promise
。Promise
是一种异步机制,主要是用来解决回调地狱的问题。Promise
对象有三种状态,分别是pending
、resolved
、rejected
;在Promise
对象的构造函数中,接收resolve
和reject
函数修改状态;Promise
对象中的then
方法,可以接收构造函数中处理的状态变化,并分别对应执行。then
方法的执行结果也会返回一个Promise
对象,因此可以进行then
的链式执行,这也是解决回调地狱的主要方式。
说明
- 题目中出现的JS指的是采用ECMAScript 2015及之后标准的JavaScript
答案中,若有错误和需完善的地方,可在下方留言反馈哈~~
查看纯习题版,请点击js基础练习题 第13天