Skip to content

哪一个方法会返回 'Hello world!' ?

Posted on:2024年8月3日 at 21:05
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 方法传递了一个新的函数。对象受 引用 影响。函数也是对象,因此两个函数严格上并不等价,尽管他们相同:他们有两个不同的内存引用地址。

原文转自:https://fe.ecool.fun/topic/fc6beb89-dcf0-456e-a4d0-746ec0968295