老师请解答

来源:3-9 Map的应用

清夏_

2022-09-26 15:24:11

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
  </head>
  <body>
    <p>我是一号p标签</p>
    <p>我是二号p标签</p>
    <p>我是三号p标签</p>

    <script type="text/javascript">
      const [p1, p2, p3] = document.querySelectorAll("p"); //Nodelist
      // console.log(p1, p2, p3);

      const m = new Map([
        [p1, "red"],
        [p2, "green"],
        [p3, "blue"],
      ]);

      m.forEach((color, elem) => {
        elem.style.color = color;
      });

      console.log(m);
    </script>
  </body>
</html>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // console.log(
      //   new Map([
      //     ["name", "YangLiJun"],
      //     ["age", 18],
      //     ["sex", "male"],
      //   ])
      // ); //Map(3) {'name' => 'YangLiJun', 'age' => 18, 'sex' => 'male'}

      console.log(
        new Map([
          [name, "YangLiJun"],
          ["age", 18],
          ["sex", "male"],
        ])
      ); //Map(3) {'' => 'YangLiJun', 'age' => 18, 'sex' => 'male'}
    </script>
  </body>
</html>

https://img.mukewang.com/climg/6331538b092b8c2211890821.jpg

https://img.mukewang.com/climg/6331538b0950ec9611940635.jpg


写回答

1回答

好帮手慕慕子

2022-09-26

同学你好,问题解答如下:

1、因为p1加了引号后表示为字符串,不再指向DOM元素,后续遍历Map实例时无法打点调用style属性,导致报错,实例:

https://img.mukewang.com/climg/633154f409c8c04117601096.jpg

可以对比输出查看下加不加引号,遍历时elem的值,帮助自己更好的理解。

2、因为在js语法中,name比较特殊,默认在window对象上存在name属性,所以可以不声明直接使用。示例:

https://img.mukewang.com/climg/6331565b0996435d09740318.jpg

而age和sex并不特殊,必须要先声明才能使用,所以直接使用就会报错。

祝学习愉快~


0

前端工程师

前端入门如同写字,如果你不知道从哪开始,那就选择前端(含Vue3.x,React17,TS)

20327 学习 · 17877 问题

查看课程