1.关于模板字符串,下列说法不正确的是
A.使用反引号标识
正确;ES6引入新的声明字符串的方式 反引号` `
B.插入变量的时候使用${ }
正确;在es6中可以用${}来实现变量拼接
C.所有空格和锁紧都会保留在输出中
正确;如果使用模版字符串表示多行字符串,空格、缩进和换行都会被保留
D.${ }中表达式不能是函数的调用
错误;
模版字符串还可以调用函数
function fn() { return "Hello World"; } `foo ${fn()} bar`
其他用法:
1.
在普通字符串中嵌入表达式var a = 5; var b = 10; console.log('Fifteen is ' + (a + b) + ' and\nnot ' + (2 * a + b) + '.'); // "Fifteen is 15 and // not 20."
2.使用对象属性
let obj = {x: 1, y: 2}; `${obj.x + obj.y}` // "3"
2.关于箭头函数的描述错误的是
A.使用箭头符号=>定义
正确;ES6中允许使用箭头
=>
来定义箭头函数箭头函数省去了
function
关键字,采用箭头=>
来定义函数。函数的参数放在=>
前面的括号中,函数体跟在=>
后的花括号中
B.参数超过1个的话,需要用用()扩起来
正确;当形参有且只有一个的时候,可以省略小括号,简化函数,超过一个就必须用()括起来
C.函数体语句超过1条的话,需要用大括号{ }扩起来,用return语句来返回
正确;当代码体只有一条语句的时候,省略花括号,此时return必须省略,而且语句的执行结果就是函数的返回值
D.函数体内的this对象,绑定使用时所在的对象
错误;箭头函数this始终指向函数声明时所在作用域下的this的值(父级作用域),而不指向调用它的地方,此时 this为静态的箭头函数中的this永远指向箭头函数所在父级作用域所属对象
3.关于Symbol,说法错误的是
A.是ES6新增的数据类型
正确;Symbol是ES6引入的一种新的原始数据类型,表示独一无二的值。它是Javascript语言的第七种数据类型,是一种类似于字符串的数据类型。
B.Symbol()===Symbol()结果为false
正确;
let s1 = Symbol(); let s2 = Symbol(); sonsole.log(s1===s2); //false
C.Symbol("same")===Symbol("same")返回结果是true
错误;与上一个选项同理,应返回false
D.当Symbol的值作为对象属性名时,不能运用点运算去获取对应的值
正确;因为用点运算符会导致javascript把后面的属性名理解成字符串类型, 而不是symbol类型。
4.下列Map结构的键名数据类型,描述错误的是
A、键名可以是数组类型的值
B、键名可以是Symbol类型的值
C、键名值可以是null
D、键名值不可以为undefined ·
ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,各种类 型的值(包括对象)都可以当作键
所以D错误
5.箭头函数写法以及箭头函数的this与其他函数this的区别?
- 箭头函数不能作为构造函数,不能使用new(箭头函数没有构造函数 constructor)。
- 箭头函数不能使用 arguments 变量存放实参,取而代之用rest参数...解决。
- this的作用域不同,箭头函数不绑定this,会捕获其外层第一个普通函数的this值,作为自己的this值。
- 箭头函数本身的this指向不能改变,但可以修改它要继承的对象的this。
- 箭头函数不支持重命名函数参数,普通函数的函数参数支持重命名
- 箭头函数相对于普通函数语法更简洁优雅
6.promise 有几种状态,什么时候会进入catch?
- 三个状态:pending,fulfilled(resolved),rejected
- 两个过程:pedding -> fulfilled(resolved),pedding -> rejected
- 当pending为rejectd时,会进入catch
pending状态,不会触发then和catch;
resolved状态,会触发后续的then回调函数;
rejected状态,会触发后续的catch回调函数;
then正常返回resolved,有报错返回rejected;
catch正常返回resolved,有报错返回rejected;