输出什么?
javascript
const set = new Set()
set.add(1)
set.add("Lydia")
set.add({ name: "Lydia" })
for (let item of set) {
console.log(item + 2)
}A. 3, NaN, NaN B. 3, 7, NaN C. 3, Lydia2, [object Object]2 D. "12", Lydia2, [object Object]2
答案: C
解析:
这个JavaScript代码片段创建了一个 Set ,并将三个不同类型的元素添加到其中:数字1,字符串"Lydia"和一个包含属性name的对象 { name: "Lydia" }。然后,使用for...of循环遍历Set中的每个元素,并将每个元素的值与2相加后打印出来。
让我们一步一步来看代码:
const set = new Set(): 创建了一个名为set的空Set。set.add(1): 将数字1添加到Set中。set.add("Lydia"): 将字符串"Lydia"添加到Set中。set.add({ name: "Lydia" }): 将包含属性name的对象{ name: "Lydia" }添加到Set中。for (let item of set) { ... }: 这是一个for...of循环,用于遍历Set中的每个元素。它将遍历所有三个元素:数字1,字符串"Lydia"和对象{ name: "Lydia" }。console.log(item + 2): 此行将在循环中打印每个元素(1,"Lydia"和{ name: "Lydia" }),并在它们的值上加上2。
然而,由于Set中包含不同的数据类型(数字、字符串和对象),+运算符在不同类型的元素上的行为也不同:
- 对于数字1:
1 + 2将得到3。 - 对于字符串"Lydia":
"Lydia" + 2将把字符串和数字连接起来,结果是"Lydia2"。 - 对于对象
{ name: "Lydia" }:对象没有定义+运算符的行为,所以"[object Object]" + 2将被打印。
循环的输出结果将是:
3
Lydia2
[object Object]2