为何JavaScript中in关键字未按预期工作?货币检测遇异常
问题原因与解决方法
你遇到的问题是因为Object.keys(currencies)返回的是数组,而in操作符在数组中检查的是索引(比如"0"、"1"这类字符串键),不是数组里的元素值。所以"JPY"作为元素,自然不会被in检测到。
以下是几种可行的解决方式:
- 直接在原对象上使用
in操作符(无需转换为数组):
console.log("JPY" in currencies); // true
- 用
Array.includes()检查数组中的元素:
const currencyNames = Object.keys(currencies); console.log(currencyNames.includes("JPY")); // true
- 更安全的方式:使用
Object.hasOwn()(避免误判原型链上的属性):
console.log(Object.hasOwn(currencies, "JPY")); // true
内容的提问来源于stack exchange,提问作者Nuray Ganb
相关产品推荐
相关产品推荐

