首页 >web前端 >js教程 >为什么 JavaScript 在这些奇怪的算术运算中会产生意想不到的结果?

为什么 JavaScript 在这些奇怪的算术运算中会产生意想不到的结果?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-24 18:19:14623浏览

Why Does JavaScript Produce Unexpected Results in These Strange Arithmetic Operations?

“Wat”演讲中令人费解的 JavaScript 行为

CodeMash 2012 的“Wat”演讲强调了 JavaScript 中的一些特殊行为,它是值得探索它们以了解背后发生的事情

[] []
与空数组一起使用的加法运算符 ( ) 将操作数转换为基元并将它们连接起来。由于数组的默认原始值为空字符串,因此 [] [] 的结果也是空字符串。

[] {}
JavaScript 中的对象有一个 toString()调用时返回“[object Object]”的方法。因此,[] {} 会生成一个对象,特别是字符串“[object Object]”。

{} []
在语句中使用时,{} 会被解析作为一个空块,因此返回未定义。该运算符将未定义的操作数强制转换为数字,导致 {} [] 为 0(而“Wat”谈话提到它应该为 NaN)。

{} {}
类似到 {}[] 时,第一个 {} 被解析为空块,导致未定义。但是,该运算符无法将字符串“[object Object]”(第二个 {} 的 toString() 值)强制转换为数字,从而导致 NaN.

Array(16).join ("wat" - 1)
ToNumber() 将 "wat" - 1 转换为 NaN,因为从字符串中减去数字会得到非数字 价值。 ToPrimitive() 然后将 NaN 转换为字符串“NaN”,在连接数组元素时重复 16 次。

结论
这些看似奇怪的行为源于 JavaScript 的原始转换规则以及与数组和对象相关的特定方法。通过了解这些底层机制,您可以避免意外结果并充分利用 JavaScript 的强大功能。

以上是为什么 JavaScript 在这些奇怪的算术运算中会产生意想不到的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn