We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
1.下面不属于ECMAScript规范的范围的是:( )
A、数据类型 B、语法 C、DOM事件 D、内置对象和函数的标准库
答案:C 解析:DOM事件不属于ECMAScript的部分;ECMAScript定义的内容:语法、类型、原型和继承、内置对象和函数的标准库。 考点: ECMAScript定义规范的理解,来自《第一节:什么是ES6?新手该如何理解》的内容。
A、只在 let 命令所在的代码块内有效 B、会产生变量提升现象 C、同一个作用域,不能重复声明同一个变量 D、不能在函数内部重新声明参数
答案:B 解析:使用var关键字才会产生变量提升的现象。关键字let不会产生变量提升现象,所以必须先声明定义后使用,否则程序抛出异常。 考点:关键字let的使用注意事项,来自《第二节:ES6新增了let关键字,干嘛用的?》的内容。
3.关于关键字const,下列说法错误的是:()
A、用于声明常量,声明后不可修改 B、不会发生变量提升现象 C、不能重复声明同一个变量 D、可以先声明,不赋值。
答案:D 解析:声明后必须赋值,否则程序会抛出异常。 考点:关键字const的使用注意事项,来自 《第三节:ES6中另一个不得不说的关键字const》的内容。
4.在数组的解构赋值中,var [ a,b,c ] = [ 1,2 ]结果中,a、b、c的值分别是:()
A、1 2 null B、1 2 undefined C、1 2 2 D、抛出异常
答案:B 解析:在解构赋值过程中,赋值不成功,变量的值会变成undefined,不会抛出异常。 考点:数组的结构赋值使用注意事项。来自 《第五节:一个令人兴奋的ES6新特性:解构赋值》的内容。
5.在对象的解构赋值中,var {a,b,c} = { “c”:10, ”b”:9, ”a”:8 } 结果中,a、b、c的值分别是:()
A、10 9 8 B、8 9 10 C、undefined 9 undefined D、null 9 null
答案:B 解析:对象的解构赋值不会受到属性的排列次序影响。 考点:对象解构赋值和数组解构赋值的区别。来自 《第五节:一个令人兴奋的ES6新特性:解构赋值》的内容。
6.关于模板字符串,下列说法不正确的是:()
A、使用反引号标识 B、插入变量的时候使用${ } C、所有的空格和缩进都会被保留在输出中 D、${ }中的表达式不能是函数的调用
答案:D 解析:${ }中可以放任意的JavaScript表达式,包括运算表达式、对象属性、函数调用等。 考点:模板字符串的特点。来自《第六节:ES6为字符串String带来哪些好玩的特性?》的内容。
7.关于字符串扩展的新函数,下面描述错误的是:()
A、includes函数用于判断字符串中是否含有指定的子字符串 B、repeat函数将目标字符串重复N次,目标字符串被修改 C、startsWidth函数判断指定的子字符串是否出现在目标字符串头部位置 D、endWidth函数判断指定的子字符串是否出现在目标字符串尾部位置
答案:B 解析:repeat函数将目标字符串重复N次,会返回一个新的字符串,不影响目标字符串。 考点:String字符串的新特性repeat函数的使用。来自《第六节:ES6为字符串String带来哪些好玩的特性?》的内容。
8.关于数值的扩展,window.isNaN(“abc”) 和Number.isNaN(“abc”)的结果分别是:()
A、true false B、false true C、true true D、false false
答案:A 解析:window.isNaN函数会把非数值的参数转化成数值再进行判断,而Number. isNaN只对数值类型有效,非数值类型的参数一律返回false。 考点:isNaN函数从全局函数移植到Number对象后的区别。来自《第七节:ES6为数值做了哪些扩展?》的内容。
9.关于数值扩展的Number.isInteger函数,下面说法错误的是:()
A、用来判断是否是整数,返回布尔值。 B、Number.isInteger(3);结果为:true C、Number.isInteger(3.0);结果为:false D、Number.isInteger(3.01);结果为:false
答案:C 解析:在JavaScript内部对整数和浮点数采用一样的存储方式,因此小数点后如果都是0的浮点数,都会被认为是整数。 考点:Number.isInteger函数使用的注意事项。来自《第七节:ES6为数值做了哪些扩展?》的内容。
10.数组扩展的fill( )函数,[1,2,3].fill(4)的结果是:()
A、[4] B、[1,2,3,4] C、[4,1,2,3] D、[4,4,4]
答案:D 解析:fill函数的参数会把原数组的每个元素填充成指定的参数。 考点:对fill( )函数的了解和使用。来自《第八节:ES6为数组做了哪些扩展?》的内容。
11.数组的扩展中,不属于用于数组遍历的函数的是:()
A、keys( ) B、entries( ) C、values( ) D、find( )
答案:D 解析:find函数用于找出数组中符合条件的第一个元素,并不是用于遍历数组。 考点:利用数组的新特性来实现数组的遍历。来自《第八节:ES6为数组做了哪些扩展?》的内容。
12.关于对象的扩展,错误的是:()
A、ES6中对象的表示法更加简洁 B、对象的属性名可以是表达式 C、对象的方法名不可以是表达式 D、当属性名为表达式的时候,需要使用[ ]标识
答案:C 解析:对象的方法名同样可以是表达式,使用[ ]标识。 考点:对象的新特性的使用注意事项。来自《第九节:ES6为对象做了哪些扩展?》的内容。
13.关于对象的Object.is函数,错误的是:()
A、用于判断两个值是否严格相等 B、用于判断两个值是否抽象相等 C、Object.is(3,'3') 结果是:false D、Object.is(3,3.0) 结果是:true
答案:B 解析:Object.is函数判断两个值是否严格相等,或者说全等,作用等同于全等符号:=== 考点:Object.is函数的了解和使用注意事项。来自《第九节:ES6为对象做了哪些扩展?》的内容。
14.函数的扩展中,关于rest参数的描述,正确的是:()
A、获取函数剩下部分的参数 B、rest参数不可以是函数的最后一个参数 C、获取函数的第一个参数 D、一个名叫rest的参数
答案:A 解析:rest参数用于表示且必须是函数的最后一个函数,后面不可以再跟其他参数,故B选项是错的。它的表示法表示法使用...(三个点)+ 自定义的参数名,故D选项是错的 考点:rest参数的理解和使用。来自《第十节:ES6为函数做了哪些扩展?》的内容。
15.关于箭头函数的描述,错误的是:() A、使用箭头符号=>定义 B、参数超过1个的话,需要用小括号()括起来 C、函数体语句超过1条的时候,需要用大括号{ }括起来,用return语句返回 D、函数体内的 this 对象,绑定使用时所在的对象
答案:D 解析:函数体内的 this 对象,绑定定义时所在的对象,而不是使用时所在的对象。这点很重要,连载第十节的时候还特意加了一节讲这个内容。 考点:箭头函数的使用注意事项。来自《第十节(补课):函数的扩展 — 箭头函数的this使用》的内容。
16.关于Symbol,错误的说法是:()
A、是ES6新增的一种数据类型 B、Symbol() === Symbol() 结果为false C、Symbol('same') === Symbol('same') 结果为true D、当symbol值作为对象的属性名的时候,不能用点运算符获取对应的值。
答案:C 解析:symbol是独一无二的值,虽然它们的描述都是“'same'”,但是对应的值还是不一样的,所以结果为:false。 解析:关于Symbol的使用注意事项,来自《第十一节:JavaScript有了一种全新的数据类型:Symbol》的内容。
17.下面运算结果,结果为true的是:()
A、Symbol.for('name') == Symbol.for('name') B、Symbol('name') == Symbol.for('name') C、Symbol('name') == Symbol('name') D、Symbol.for('name') == Symbol('name')
答案:A 解析:Symbol.for函数会根据参数名,去全局环境中搜索是否有以该参数为名的symbol值,有就返回它,没有就以该参数名来创建一个新的symbol值,并登记在全局环境中,而Symbol每次都会创建一个独一无二的值,不会登记在全局环境中。 解析:Symbol和Symbol.for创建变量的区别,来自《第十一节:JavaScript有了一种全新的数据类型:Symbol》的内容。
18.关于Proxy代理,下面说法错误的是:()
A、可以理解成在目标对象之前,架设一层“拦截” B、Proxy的get 方法用于拦截某个属性的读取操作。 C、Proxy的set方法用于拦截对对象的写操作。 D、一旦对象设置Proxy代理后不可取消,所以要谨慎操作
答案:D 解析:可以用Proxy.revocable( )来取消代理,并不是不可以取消的。 考点:Proxy代理的设置和取消代理,来自《第十二节:ES6 Proxy代理 和 去银行存款有什么关系?》的内容。
19.关于for...of的简述,说法错误的是:()
A、它可以遍历所有具有iterator 接口的数据结构 B、不可以用break来终止循环 C、使用continue可以跳过当前循环 D、可以遍历DOM list对象
答案:B 解析:for...of可以用break来终止循环,而传统的forEach则不可以用break终止循环,这正是for...of相对forEach的优势 考点:for...of遍历相对于传统便利方式的优势,来自《第十三节:易学又实用的新特性:for...of》的内容。
20.关于set结构,下面说法错误的是:()
A、创建一个实例需要用new关键字 B、结构成员都是唯一的,不允许重复 C、使用add方法添加已经存在的成员会报错 D、初始化的时候接受数组作为参数
答案:C 解析:使用add方法添加已经存在的成员,会自动忽略相同的值,相同的值保留一个。 考点:set结构的特点,来自《第十六节:ES6新增的 Set 和 WeakSet 是什么东西?》的内容。
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》的内容。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
1.下面不属于ECMAScript规范的范围的是:( )
A、数据类型
B、语法
C、DOM事件
D、内置对象和函数的标准库
答案
答案:C 解析:DOM事件不属于ECMAScript的部分;ECMAScript定义的内容:语法、类型、原型和继承、内置对象和函数的标准库。 考点: ECMAScript定义规范的理解,来自《第一节:什么是ES6?新手该如何理解》的内容。
2.下面不属于关键字let的特点的是:( )
A、只在 let 命令所在的代码块内有效
B、会产生变量提升现象
C、同一个作用域,不能重复声明同一个变量
D、不能在函数内部重新声明参数
答案
答案:B 解析:使用var关键字才会产生变量提升的现象。关键字let不会产生变量提升现象,所以必须先声明定义后使用,否则程序抛出异常。 考点:关键字let的使用注意事项,来自《第二节:ES6新增了let关键字,干嘛用的?》的内容。
3.关于关键字const,下列说法错误的是:()
A、用于声明常量,声明后不可修改
B、不会发生变量提升现象
C、不能重复声明同一个变量
D、可以先声明,不赋值。
答案
答案:D 解析:声明后必须赋值,否则程序会抛出异常。 考点:关键字const的使用注意事项,来自 《第三节:ES6中另一个不得不说的关键字const》的内容。
4.在数组的解构赋值中,var [ a,b,c ] = [ 1,2 ]结果中,a、b、c的值分别是:()
A、1 2 null
B、1 2 undefined
C、1 2 2
D、抛出异常
答案
答案:B 解析:在解构赋值过程中,赋值不成功,变量的值会变成undefined,不会抛出异常。 考点:数组的结构赋值使用注意事项。来自 《第五节:一个令人兴奋的ES6新特性:解构赋值》的内容。
5.在对象的解构赋值中,var {a,b,c} = { “c”:10, ”b”:9, ”a”:8 } 结果中,a、b、c的值分别是:()
A、10 9 8
B、8 9 10
C、undefined 9 undefined
D、null 9 null
答案
答案:B 解析:对象的解构赋值不会受到属性的排列次序影响。 考点:对象解构赋值和数组解构赋值的区别。来自 《第五节:一个令人兴奋的ES6新特性:解构赋值》的内容。
6.关于模板字符串,下列说法不正确的是:()
A、使用反引号标识
B、插入变量的时候使用${ }
C、所有的空格和缩进都会被保留在输出中
D、${ }中的表达式不能是函数的调用
答案
答案:D 解析:${ }中可以放任意的JavaScript表达式,包括运算表达式、对象属性、函数调用等。 考点:模板字符串的特点。来自《第六节:ES6为字符串String带来哪些好玩的特性?》的内容。
7.关于字符串扩展的新函数,下面描述错误的是:()
A、includes函数用于判断字符串中是否含有指定的子字符串
B、repeat函数将目标字符串重复N次,目标字符串被修改
C、startsWidth函数判断指定的子字符串是否出现在目标字符串头部位置
D、endWidth函数判断指定的子字符串是否出现在目标字符串尾部位置
答案
答案:B 解析:repeat函数将目标字符串重复N次,会返回一个新的字符串,不影响目标字符串。 考点:String字符串的新特性repeat函数的使用。来自《第六节:ES6为字符串String带来哪些好玩的特性?》的内容。
8.关于数值的扩展,window.isNaN(“abc”) 和Number.isNaN(“abc”)的结果分别是:()
A、true false
B、false true
C、true true
D、false false
答案
答案:A 解析:window.isNaN函数会把非数值的参数转化成数值再进行判断,而Number. isNaN只对数值类型有效,非数值类型的参数一律返回false。 考点:isNaN函数从全局函数移植到Number对象后的区别。来自《第七节:ES6为数值做了哪些扩展?》的内容。
9.关于数值扩展的Number.isInteger函数,下面说法错误的是:()
A、用来判断是否是整数,返回布尔值。
B、Number.isInteger(3);结果为:true
C、Number.isInteger(3.0);结果为:false
D、Number.isInteger(3.01);结果为:false
答案
答案:C 解析:在JavaScript内部对整数和浮点数采用一样的存储方式,因此小数点后如果都是0的浮点数,都会被认为是整数。 考点:Number.isInteger函数使用的注意事项。来自《第七节:ES6为数值做了哪些扩展?》的内容。
10.数组扩展的fill( )函数,[1,2,3].fill(4)的结果是:()
A、[4]
B、[1,2,3,4]
C、[4,1,2,3]
D、[4,4,4]
答案
答案:D 解析:fill函数的参数会把原数组的每个元素填充成指定的参数。 考点:对fill( )函数的了解和使用。来自《第八节:ES6为数组做了哪些扩展?》的内容。
11.数组的扩展中,不属于用于数组遍历的函数的是:()
A、keys( )
B、entries( )
C、values( )
D、find( )
答案
答案:D 解析:find函数用于找出数组中符合条件的第一个元素,并不是用于遍历数组。 考点:利用数组的新特性来实现数组的遍历。来自《第八节:ES6为数组做了哪些扩展?》的内容。
12.关于对象的扩展,错误的是:()
A、ES6中对象的表示法更加简洁
B、对象的属性名可以是表达式
C、对象的方法名不可以是表达式
D、当属性名为表达式的时候,需要使用[ ]标识
答案
答案:C 解析:对象的方法名同样可以是表达式,使用[ ]标识。 考点:对象的新特性的使用注意事项。来自《第九节:ES6为对象做了哪些扩展?》的内容。
13.关于对象的Object.is函数,错误的是:()
A、用于判断两个值是否严格相等
B、用于判断两个值是否抽象相等
C、Object.is(3,'3') 结果是:false
D、Object.is(3,3.0) 结果是:true
答案
答案:B 解析:Object.is函数判断两个值是否严格相等,或者说全等,作用等同于全等符号:=== 考点:Object.is函数的了解和使用注意事项。来自《第九节:ES6为对象做了哪些扩展?》的内容。
14.函数的扩展中,关于rest参数的描述,正确的是:()
A、获取函数剩下部分的参数
B、rest参数不可以是函数的最后一个参数
C、获取函数的第一个参数
D、一个名叫rest的参数
答案
答案:A 解析:rest参数用于表示且必须是函数的最后一个函数,后面不可以再跟其他参数,故B选项是错的。它的表示法表示法使用...(三个点)+ 自定义的参数名,故D选项是错的 考点:rest参数的理解和使用。来自《第十节:ES6为函数做了哪些扩展?》的内容。
15.关于箭头函数的描述,错误的是:()
A、使用箭头符号=>定义
B、参数超过1个的话,需要用小括号()括起来
C、函数体语句超过1条的时候,需要用大括号{ }括起来,用return语句返回
D、函数体内的 this 对象,绑定使用时所在的对象
答案
答案:D 解析:函数体内的 this 对象,绑定定义时所在的对象,而不是使用时所在的对象。这点很重要,连载第十节的时候还特意加了一节讲这个内容。 考点:箭头函数的使用注意事项。来自《第十节(补课):函数的扩展 — 箭头函数的this使用》的内容。
16.关于Symbol,错误的说法是:()
A、是ES6新增的一种数据类型
B、Symbol() === Symbol() 结果为false
C、Symbol('same') === Symbol('same') 结果为true
D、当symbol值作为对象的属性名的时候,不能用点运算符获取对应的值。
答案
答案:C 解析:symbol是独一无二的值,虽然它们的描述都是“'same'”,但是对应的值还是不一样的,所以结果为:false。 解析:关于Symbol的使用注意事项,来自《第十一节:JavaScript有了一种全新的数据类型:Symbol》的内容。
17.下面运算结果,结果为true的是:()
A、Symbol.for('name') == Symbol.for('name')
B、Symbol('name') == Symbol.for('name')
C、Symbol('name') == Symbol('name')
D、Symbol.for('name') == Symbol('name')
答案
答案:A 解析:Symbol.for函数会根据参数名,去全局环境中搜索是否有以该参数为名的symbol值,有就返回它,没有就以该参数名来创建一个新的symbol值,并登记在全局环境中,而Symbol每次都会创建一个独一无二的值,不会登记在全局环境中。 解析:Symbol和Symbol.for创建变量的区别,来自《第十一节:JavaScript有了一种全新的数据类型:Symbol》的内容。
18.关于Proxy代理,下面说法错误的是:()
A、可以理解成在目标对象之前,架设一层“拦截”
B、Proxy的get 方法用于拦截某个属性的读取操作。
C、Proxy的set方法用于拦截对对象的写操作。
D、一旦对象设置Proxy代理后不可取消,所以要谨慎操作
答案
答案:D 解析:可以用Proxy.revocable( )来取消代理,并不是不可以取消的。 考点:Proxy代理的设置和取消代理,来自《第十二节:ES6 Proxy代理 和 去银行存款有什么关系?》的内容。
19.关于for...of的简述,说法错误的是:()
A、它可以遍历所有具有iterator 接口的数据结构
B、不可以用break来终止循环
C、使用continue可以跳过当前循环
D、可以遍历DOM list对象
答案
答案:B 解析:for...of可以用break来终止循环,而传统的forEach则不可以用break终止循环,这正是for...of相对forEach的优势 考点:for...of遍历相对于传统便利方式的优势,来自《第十三节:易学又实用的新特性:for...of》的内容。
20.关于set结构,下面说法错误的是:()
A、创建一个实例需要用new关键字
B、结构成员都是唯一的,不允许重复
C、使用add方法添加已经存在的成员会报错
D、初始化的时候接受数组作为参数
答案
答案:C 解析:使用add方法添加已经存在的成员,会自动忽略相同的值,相同的值保留一个。 考点:set结构的特点,来自《第十六节:ES6新增的 Set 和 WeakSet 是什么东西?》的内容。
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》的内容。
The text was updated successfully, but these errors were encountered: