139题
class Counter {
#number = 10
increment() {
this.#number++
}
getNum() {
return this.#number
}
}
const counter = new Counter()
counter.increment()
console.log(counter.#number)
- A:10
- B:11
- C:undefined
- D:SyntaxError
Answer
答案:D在ES2020中, 我们可以在Class中使用#符号定义私有变量. 我们不可以从Class外部访问这些变量. 当我们想打印counter.#number, 一个SyntaxError被抛出: 我们不可从Counter Class外部访问它.
146题
function getFruit(fruits) {
console.log(fruits?.[1]?.[1])
}
getFruit([['🍊', '🍌'], ['🍍']])
getFruit()
getFruit([['🍍'], ['🍊', '🍌']])
- A: null, undefined, 🍌
- B: [ ], null, 🍌
- C: [ ], [ ], 🍌
- D: undefined, undefined, 🍌
Answer
答案:D? 允许我们选择性的访问对象内部深层次嵌套的属性. 我们尝试区打印出fruits数组中索引为1的子数组上索引为1的元素. 如果fruits数组中索引为1的子数组不存在,就简单的返回undefined. 如果fruits数组中索引为1的子数组存在,但这个子数组索引为1的元素不存在, 则返回 undefined.
第一, 我们尝试打印[['🍊', '🍌'], ['🍍']]数组中的子数组['🍍']的第二项. 这个数组值包含一个元素, 意味着它不存在索引为1的元素, 即返回 undefined.
然后, 我们调用了getFruits函数但并没有传入参数, 意味着fruits数组默认值为undefined. 因为我们有条件的链接到了fruits数组的索引1, 则返回 undefined, 因为索引为1的元素不存在.
最后, 我们尝试打印出['🍍'], ['🍊', '🍌']数组中的子数组['🍊', '🍌'] 上的第二项. 在这个子数组上索引为1的元素是🍌, 即被打印了出来.