Q1选择题难度 2
1/12
ES6+ · 中级 02
记忆强度
关于 Symbol.for 与 Symbol 描述信息,下列判断哪一项正确?
const a = Symbol('token');
const b = Symbol('token');
const c = Symbol.for('token');
const d = Symbol.for('token');
ES6+中级题库第 2 组,共 12 张卡片。
ES6+ · 中级 02
const a = Symbol('token');
const b = Symbol('token');
const c = Symbol.for('token');
const d = Symbol.for('token');
每次调用 Symbol(description) 都会创建一个新的唯一 Symbol,description 只用于调试和展示,不参与身份合并。
- A(错误):该结果更符合使用 var 声明计数变量的情况,因为多个闭包会共享同一个函数级绑定,循环结束后其值已经变成 3;
- A(错误):如果 read 是普通函数,call 可以把其 this 指向 value 为 99 的对象;
ECMAScript 模块的命名导入不是对导出值做一次性快照,而是建立指向导出方绑定的实时视图。
Map 接受对象和原始值作为键,适合需要任意键类型及稳定迭代顺序的映射。
- A(错误):a 的 map 回调一次也不会执行,因为原数组相应索引上并不存在属性;
正确答案是 A、C、D。
Array.from 会根据输入产生一个新的稠密数组。
- A(正确):该选项准确体现两个 API 的筛选范围:Object.keys 仅保留可枚举字符串键,而 Reflect.ownKeys 收集对象全部自…
- A(错误):两个 NaN 键不会分别占据两个条目,而且第二次写入会覆盖第一个 NaN 键对应的值,因此容量和读取结果都与该选项不同。
Promise.all 要求所有输入都兑现,只要任一输入拒绝,组合 Promise 就以该拒绝原因拒绝。
- A(正确):该选项同时体现了 UTF-16 代码单元计数和字符串码点迭代的差异:原始长度为三,而两种基于迭代器的转换长度均为二。