JavaScript 的 Map的key是什么?

对JavaScript的Map,有几个问题:

var map = new Map() 
map.set({'k1': 'v1'})
map.set({'k2': 'v2'})
map.set({3: 'v3'})

for (item in map.keys()) {
    console.log(item)
}

console.log(map.keys())  // [Map Iterator] { { k1: 'v1' }, { k2: 'v2' }, { '3': 'v3' } }

1.Map的key是什么? 在打印的时候:

[Map Iterator] { { k1: 'v1' }, { k2: 'v2' }, { '3': 'v3' } }

可见k1并不是引号包裹,是否是字符串?
这个key'3'是引号包裹。

2.
map.keys()是可迭代对象,不能在for of 循环内被迭代吗?

阅读 2.3k
2 个回答

map.set(key, value) 是需要两个参数的,你只提供了一个。那么第二个参数是 undefined。

所以最终 map 里有三个 entry ,key 分别是 {'k1': 'v1'} {'k2': 'v2'} {3: 'v3'},value 都是 undefined。


对应形如 {'k1': 'v1'} 的 object ,其属性只能是 string 或 Symbol 。写的时候,只要没有歧义,并且符合语法(比如,必须是合法的数字或标识符),加不加引号都是一样的。


可以用 for of 。(不过你问题里的程序里写的是 for in)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题