Skip to content

输出什么?

Posted on:2023年7月20日 at 09:29
const set = new Set();

set.add(1);
set.add("Lydia");
set.add({ name: "Lydia" });

for (let item of set) {
  console.log(item + 2);
}

这个JavaScript代码片段创建了一个 Set ,并将三个不同类型的元素添加到其中:数字1,字符串”Lydia”和一个包含属性name的对象 { name: "Lydia" }。然后,使用for...of循环遍历Set中的每个元素,并将每个元素的值与2相加后打印出来。

让我们一步一步来看代码:

  1. const set = new Set(): 创建了一个名为set的空Set。

  2. set.add(1): 将数字1添加到Set中。

  3. set.add("Lydia"): 将字符串”Lydia”添加到Set中。

  4. set.add({ name: "Lydia" }): 将包含属性name的对象 { name: "Lydia" } 添加到Set中。

  5. for (let item of set) { ... }: 这是一个for...of循环,用于遍历Set中的每个元素。它将遍历所有三个元素:数字1,字符串”Lydia”和对象 { name: "Lydia" }

  6. console.log(item + 2): 此行将在循环中打印每个元素(1,“Lydia”和 { name: "Lydia" }),并在它们的值上加上2。

然而,由于Set中包含不同的数据类型(数字、字符串和对象),+运算符在不同类型的元素上的行为也不同:

  1. 对于数字1:1 + 2 将得到 3
  2. 对于字符串”Lydia”:"Lydia" + 2 将把字符串和数字连接起来,结果是 "Lydia2"
  3. 对于对象 { name: "Lydia" }:对象没有定义+运算符的行为,所以 "[object Object]" + 2 将被打印。

循环的输出结果将是:

3
Lydia2
[object Object]2
原文转自:https://fe.ecool.fun/topic/8318d81a-7336-466e-9761-cbd175ccfd2c