空数组 空数组:空值串联
当添加两个空数组时,JavaScript 首先将它们转换为基元。在这种情况下,数组的默认值为空字符串,因此结果是两个空字符串的串联:一个空字符串。
空数组对象:对象清理
将空数组转换为基元(空字符串)并将对象转换为基元(其字符串表示形式,“[object Object]”)会产生空字符串和对象表示的串联,产生“[object Object]。”
对象空数组:JavaScript 的非常规算术
与视频不同,在提供的JSFiddle,{} [] 的结果是 [Object] 而不是 0。出现这种差异是因为解释了空块 {}作为块语句,其计算结果为空。一元运算符将空值转换为数字,结果为 0。但是,由于您在函数参数中使用它,因此该语句被迫解释为表达式语句。这会导致 {} 被解析为空对象文字而不是空块,从而导致 [Object]。
Object 对象:不匹配的输出
结果{} {} 的值应该是“object Object”,但 JSFiddle 显示了不同的结果。这种差异可能是由于 JavaScript 的特定于实现的行为所致,其中将两个对象添加到字符串的结果可能会有所不同。
Array(16).join("wat" - 1): NaN Propagation
此表达式的输入字符串是“NaN-1”,其计算结果为 NaN。当 JavaScript 尝试将“NaN”与数组的空字符串元素连接时,根据连接算法,结果始终为 NaN。
“wat” 1 与“wat” - 1:字符串与. 数字转换
在“wat”1 中,JavaScript 将 1 转换为字符串,结果为“wat1”。另一方面,在“wat”- 1 中,它尝试将“wat”转换为数字,这会导致 NaN。由于串联运算符需要一个字符串作为其第一个参数,因此 NaN 会转换回字符串,从而导致“NaN”重复。
以上是为什么 JavaScript 在字符串和数字连接和算术中产生意外结果?的详细内容。更多信息请关注PHP中文网其他相关文章!