首页 > 解决方案 > 为什么参数设置为“Mickey”时返回的“Hey Mickey”不一样?

问题描述

function hi(cartoon_character) {
 if (cartoon_character == { name: 'Mickey' }) {
   return 'Hey Mickey'
 } else {
   return 'Hey Mouse'
 }
}

document.write(hi({ name: 'Mickey' }));

为什么结果是“Hey Mouse” 应该是“ Hey Mickey”

标签: javascript

解决方案


在这里,您正在比较内存位置(引用),因此结果始终是 Hey Mouse。一个快速的解决方法可能是:

function hi(cartoon_character) {
     if (JSON.stringify(cartoon_character) ===
     JSON.stringify({ name: 'Mickey' })) {
       return 'Hey Mickey'
     } else {
       return 'Hey Mouse'
     }
    }
    
 console.log( hi({name: 'Mickey'}) )

为了更好地理解,请查看https://medium.com/javascript-in-plain-english/comparing-objects-in-javascript-ce2dc1f3de7f#:~:text=Comparing%20objects%20is%20easy%2C%20use,obj2 )%3B%20将%20返回%20false。


推荐阅读