ES6系列40道基础题(含答案)(二)

21.关于Set结构的实例方法,下面说法错误的是:()
A.set方法用于添加成员
B.clear方法用于清除所有成员。
C.entries方法返回成员的位置索引和值的遍历器
D.values方法返回成员值的便利器
答案:C
解析:返回的是键名和键值的遍历器;特别注意的是:set结构的键名和键值是同一个值。
考点:set结构键名和键值的特点,来自《第十六节:ES6新增的 Set 和 WeakSet 是什么东西?》的内容。

22.关于WeakSet结构,说法错误的是:()
A、与Set结构一样,成员值都是唯一
B、成员值必须是对象
C、WeakSet 中的对象都是弱引用
D、可以forEach( )方法实现遍历
答案:D
解析:WeakSet结构是不可遍历的,所以它不存在forEach方法,以及keys()、values()、entries()方法,这是它和Set结构不同处之一。
考点:Set和WeakSet的不同点,来自《第十六节:ES6新增的 Set 和 WeakSet 是什么东西?》的内容。

23.关于Map结构的介绍,下面说法错误的是:()
A.是键值对的集合
B.创建实例需要使用new关键字
C.Map结构的键名必须是引用类型
D.Map结构是可遍历的
答案:C
解析:键名可以是任何数据类型,这是Map结构的最大特性,也是Map结构和传统对象Object最大的区别。
考点:Map结构的键名特点,来自《第十七节:ES6新增的Map和WeakMap 又是什么东西?》的内容。

24.下列Map结构的键名数据类型,描述错误的是:()
A.键名可以是数组类型的值
B.键名可以是Symbol类型的值
C.键名值可以是null
D.键名值不可以为undefined
答案:D
解析:undefined也可以做为Map结构的键名。
考点:Map结构键名的值类型,来自《第十七节:ES6新增的Map和WeakMap 又是什么东西?》的内容。

25.关于WeakMap结构,下列说法错误的是:()
A.创建实例需要使用new关键字
B.键名可以是任何类型的值
C.WeakMap结构不支持clear方法
D.WeakMap结构不可遍历
答案:B
解析:WeakMap结构的键名必须是引用类型的值,也是它和Map最大不同之处。
考点:Map和WeakMap的不同点,来自《第十七节:ES6新增的Map和WeakMap 又是什么东西?》的内容。

26.ES6的新特性Promise对象的设计初衷是:()
A.更好地实现遍历具有iterator接口的数据结构
B.为对象的操作增加了一层“拦截”
C.独一无二的值,用于对象属性,避免属性名冲突
D.让开发者更合理、更规范地用于处理异步操作
答案:D
解析:遍历具有iterator接口的数据结构是for…of的作用;为对象的操作增加了一层“拦截”是Proxy代理的设计初衷;独一无二的值,避免属性名冲突是Symbol的设计初衷。而D选项,是Promise对象的设计初衷。
考点:Promise对象的作用,来自《第十八节:教你如何使用ES6的Promise对象》的内容。

27.关于Promise对象的状态,下列说法错误的是:()
A.三种状态分别是:pending初始状态、fulfilled成功、rejected失败
B.pending初始状态可以状变成fulfilled成功
C.rejected失败不可以状变成pending初始状态
D.rejected失败可以状变成fulfilled成功
答案:D
解析:A、B、C的说法都是正确的,rejected失败和fulfilled成功之间不能相互转换,故D选项是错误的。
考点:Promise对象三种状态的转换关系,来自《第十八节:教你如何使用ES6的Promise对象》的内容。

28.下面关于类class的描述,错误的是:()
A.JavaScript的类class本质上是基于原型prototype的实现方式做了进一步的封装
B.constructor构造方法是必须的
C.如果类的constructor构造方法有多个,后者会覆盖前者
D.类的静态方法可以通过类名调用,不需要实例化
答案:C
解析:同一个类的constructor构造方法只能有一个,否则程序会报错。
考点:类class的声明,来自《第十九节:终于,JavaScript也有了类(class)的概念》的内容。

29.JavaScript中类的继承使用的关键字是:()
A.extends
B.inherit
C.extend
D.base
答案:A
解析:extends才是JavaScript中类的继承关键字,其他的选项都不是。
考点:类的继承知识,来自《第十九节:终于,JavaScript也有了类(class)的概念》的内容。

30.在类的继承中,关于super的说法错误的是:()
A.在子类的构造函数,必须先调用super( )
B.super相当于子类的引用
C.先调用super( ),才可以使用this
D.super( )相当于父类构造函数的调用
答案:B
解析:super是父类的引用,我们可以通过super来调用父类的方法和属性。
考点:类的继承,来自《第十九节:终于,JavaScript也有了类(class)的概念》的内容。

31.下列数据结构中,不能被for…of遍历的是:()
A.Array数组
B.Object对象
C.String字符串
D.Set结构
答案:B
解析:只有该数据结构实现了Iterator遍历器接口才可以被for…of遍历,而数组,字符串,Set和Map结构正式这样的可遍历对象。而普通的Object对象并没有实现Iterator遍历器接口。
考点:具有Iterator接口可遍历对象,来自《第十四节:ES6的 Iterator 遍历器到底是什么?》的内容。

32.关于Iterator遍历器的说法,错误的是:()
A、next( )方法是Iterator遍历器的核心
B、当next( )返回对象的done属性为fasle,遍历结束
C、具有Iterator接口的对象视为可遍历对象
D、可以自定义一个可遍历对象和其遍历行为
答案:B
解析:当next( )返回对象的done属性为fasle,表示遍历未结束,done属性为true时,表示遍历结束。
考点:Iterator遍历器的原理,来自《第十四节:ES6的 Iterator 遍历器到底是什么?》的内容。

33.关于新特性Generator函数的描述,错误的是:()
A.Generator函数,又称生成器函数
B.声明Generator函数的关键字是:function*
C.Generator函数执行后得到的一个生成器
D.使用return语句使Generator函数暂停执行,直到next方法的调用
答案:D
解析:使函数暂停执行的关键字是yield,不是return;return语句是使函数停止执行并退出。
考点:Generator函数的特点,来自《第十五节:有一种特殊的函数叫:Generator函数》的内容。

34.Generator函数的yield关键字的作用是:()
A.停止执行
B.退出函数
C.暂停执行,等待next( )方法调用
D.停止执行,可自行恢复执行
答案:C
解析:Generator函数可以有很多个yield。而return代表的是终止执行,yield代表的是暂停执行,后续通过调用生成器的next( )方法,可以恢复执行。
考点:yield关键字的关键字,来自《第十五节:有一种特殊的函数叫:Generator函数》的内容。

35.在Generator函数中,yield语句的作用是:()
A.调用另外的Generator函数
B.暂停执行,待next( )方法调用后恢复
C.停止执行,退出函数
D.调用任意的其他函数
答案:A
解析:关键字yield
来实现调用另外的Generator函数。如果一个Generator函数A执行过程中,进入(调用)了另一个Generator函数B,那么会一直等到Generator函数B全部执行完毕后,才会返回Generator函数A继续执行。
考点:关键字yield*的作用,来自《第十五节:有一种特殊的函数叫:Generator函数》的内容。

36.关于ES6的module模块,下列说法错误的是:()
A.可以有效解决大型系统文件复杂的依赖问题
B.使用export语句可以选择性地向外部暴露自己的属性或者方法
C.使用import语句导入其他模块的属性或者方法
D.目前大部分主流浏览器都支持module模块
答案:D
解析:目前(2016年上半年)还没有浏览器支持module模块的开发,需要借助转码工具才可以使用。A选项是ES6的设计初衷之一,B选项是export语句的正确描述,C选项是import语句的正确描述。
考点:module模块的使用和实现,来自《一个缺失已久的特性 — module模块》的内容。

37.module模块中,对下列语句的描述,错误的是:()
A.export 导出
B.import 导入
C.export default 默认导出
D.import * as 重命名
答案:D
解析:import * as:星号符*实现的是整体导入。而重命名的实现方式是:import { name as myname }。
考点:module模块的关键字语句含义,来自《一个缺失已久的特性 — module模块》的内容。

38.module模块中的注意事项,下列说法错误的:()
A.除了对象类型以外,导出的属性对外都是只读的
B.导入不存在的变量,值为undefined
C.导入不存在的变量,程序会抛出异常
D.可以为导入的属性和方法取任意名字
答案:C
解析:导入不存在的变量,程序不会抛出异常,只是值为undefined。
考点:module模块的注意事项,来自《一个缺失已久的特性 — module模块》的内容。

39.想要获取Map实例对象的成员数,利用的属性是:()
A.size
B.length
C.sum
D.members
答案:A
解析:属性就是size:获取实例的成员数,其他选项都不是,很多初学者误以为是length。
考点:Map结构的知识点,来自《第十七节:ES6新增的Map和WeakMap 又是什么东西?》的内容。

40.关于定义常量的关键字const,定义一个Object对象{“name”:”Jack”},再对属性name 的值进行修改,如:obj.name = “John”。下列说法正确的:()
A.修改常量,程序跑出异常
B.程序不抛出异常,修改无效
C.修改成功,name的值为John
D.程序不抛出异常,name的值为undefined
答案:C
解析:用const来声明一个对象类型的常量,就是传址赋值。而不可修改的是对象在内存中的地址,而不是对象本身。所以修改name并不是修改对象的内存地址,所以可以成功修改。
考点:const定义一个对象时候的注意事项,还记得装修师傅的故事吗?来自《第三节:ES6中另一个不得不说的关键字const》的内容。

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值