老师请解答
来源: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>

1回答
好帮手慕慕子
2022-09-26
同学你好,问题解答如下:
1、因为p1加了引号后表示为字符串,不再指向DOM元素,后续遍历Map实例时无法打点调用style属性,导致报错,实例:

可以对比输出查看下加不加引号,遍历时elem的值,帮助自己更好的理解。
2、因为在js语法中,name比较特殊,默认在window对象上存在name属性,所以可以不声明直接使用。示例:

而age和sex并不特殊,必须要先声明才能使用,所以直接使用就会报错。
祝学习愉快~
相似问题