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定义变量,暂时性死区

全部评论
以上题目如果不会,建议同学详细了解一下this相关知识,如有需要可报一下牛客前端集训营的课程,连接:https://www.nowcoder.com/courses/cover/live/662
点赞 回复 分享
发布于 2021-07-01 10:29

相关推荐

点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务