ES6笔试题
ES6新考题
1. const
const emojis = ["🎄", "🎅🏼", "🎁", "⭐"]; /* 1 */ emojis.push("🦌"); /* 2 */ emojis.splice(0, 2); /* 3 */ emojis = [...emojis, "🥂"]; /* 4 */ emojis.length = 0;
哪个会报错?
答案:3
const确实定义的内容不可重复声明或更改,但是这是有前提的:前提是这个数据是【简单数据类型】 假设我们给【复杂数据类型】使用const,比如const kb = {},我给对象使用const的时候,是【可以改变】对象的属性的 为什么呢? 因为复杂数据类型储存的是一个【指针】,改变对象的属性并不会影响这个指针,所以const不会报错,因此更改指针所指向的数据,不属于const“管辖”的范畴,是可以更改的 只要不对const的“底线”,也就是当前定义的变量内容进行更改,就不会报错
2.
const add = x => x + x; function myFunc(num = 2, value = add(num)) { console.log(num, value); } myFunc(); myFunc(3);
答案: 2 4 3 6
取默认参数
3.
const randomValue = 21; function getInfo() { console.log(typeof randomValue); const randomValue = "Lydia Hallie"; } getInfo();
答案:报错 暂时性死区
4.
const spookyItems = ["👻", "🎃", "🕸"]; ({ item: spookyItems[3] } = { item: "💀" }); console.log(spookyItems);
- A:
["👻", "🎃", "🕸"]
- B:
["👻", "🎃", "🕸", "💀"]
- C:
["👻", "🎃", "🕸", { item: "💀" }]
- D:
["👻", "🎃", "🕸", "[object Object]"]
答案: B
解构赋值运算符
5.
const myFunc = ({ x, y, z }) => { console.log(x, y, z); }; myFunc(1, 2, 3);
- A:
1
2
3
- B:
{1: 1}
{2: 2}
{3: 3}
- C:
{ 1: undefined }
undefined
undefined
- D:
undefined
undefined
undefined
答案:D
题考的是es6解构赋值里面的对象解构赋值,对象解构赋值能否赋值成功最重要的一点就是,两边要有同名属于。比如:let {name,age}={name:1},这里name就能取到值,而age没有对应的同名属性,导致取不到值,最后age就会等于undefined。同理上面这题相当于:let {x,y,z}=1,这里的x、y、z都没找到同名的属性所以就取不到值最后都等于undefined
6.
function sumValues(x, y, z) { return x + y + z; }
- A:
sumValues([...1, 2, 3])
- B:
sumValues([...[1, 2, 3]])
- C:
sumValues(...[1, 2, 3])
- D:
sumValues([1, 2, 3])
答案: C
解构赋值运算符的使用
7.
const person = { name: "Lydia", age: 21 } const changeAge = (x = { ...person }) => x.age += 1 const changeAgeAndName = (x = { ...person }) => { x.age += 1 x.name = "Sarah" } changeAge(person) changeAgeAndName() console.log(person)
- A:
{name: "Sarah", age: 22}
- B:
{name: "Sarah", age: 23}
- C:
{name: "Lydia", age: 22}
- D:
{name: "Lydia", age: 23}
答案:C
changeAge(person)方法会改变入参的值,changeAgeAndName()方法没有入参,就会进行解构赋值,解构赋值不会改变原有的对象,但是操作的都是person对象
8.
const name = "Lydia"; age = 21; console.log(delete name); console.log(delete age);
- A:
false
,true
- B:
"Lydia"
,21
- C:
true
,true
- D:
undefined
,undefined
答案:A
使用了 const ,它会标记为不可配置, let 或var 也是不可配置的,不可删除。
9.
const set = new Set([1, 1, 2, 3, 4]); console.log(set);
- A:
[1, 1, 2, 3, 4]
- B:
[1, 2, 3, 4]
- C:
{1, 1, 2, 3, 4}
- D:
{1, 2, 3, 4}
答案:D
set去重生成set对象。
10.
function sayHi() { console.log(name) console.log(age) var name = 'Lydia' let age = 21 } sayHi()
答案: undefined 和 报错
var 变量提升,let创建提升,但是不可访问,暂时性死区
11.
const randomValue = 21; function getInfo() { console.log(typeof randomValue); const randomValue = "Lydia Hallie"; } getInfo();
- A:
"number"
- B:
"string"
- C:
undefined
- D:
ReferenceError
答案: D
const定义变量,暂时性死区