javascript - 为什么参数设置为“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”
解决方案
在这里,您正在比较内存位置(引用),因此结果始终是 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。
推荐阅读
- python - 寻找方向角θ值
- angular - 将文件复制到另一个文件夹后如何初始化现有的 Angular 6 应用程序?
- jsf - 如何使动态生成的 URL 重定向到另一个选项卡?
- regex - YYYY-MM-DD~成功的表达式
- python-3.x - 添加低线后在 seaborn 图中旋转 xtick 标签(不是刻度)
- spring - Spring WS - 寻找请求标头/有效负载和响应标头/有效负载示例
- json - 循环遍历 JSON 键和值
- netsuite - 限制在高级 pdf 打印中打印的值
- database - android应用程序上的光标崩溃
- c++ - initializer_list、构造函数和大括号初始化