const myMap = new Map();
const myFunc = () => "greeting";
myMap.set(myFunc, "Hello world!");
//1
myMap.get("greeting");
//2
myMap.get(myFunc);
//3
myMap.get(() => "greeting");
当通过 set
方法添加一个键值对,一个传递给 set
方法的参数将会是键名,第二个参数将会是值。在这个case里,键名为 函数 () => 'greeting'
,值为'Hello world'
。 myMap
现在就是 { () => 'greeting' => 'Hello world!' }
。
1 是错的,因为键名不是 'greeting'
而是 () => 'greeting'
。
3 是错的,因为我们给get
方法传递了一个新的函数。对象受 引用 影响。函数也是对象,因此两个函数严格上并不等价,尽管他们相同:他们有两个不同的内存引用地址。