javascript - 对象的隐式类型强制

标签 javascript types type-conversion type-coercion

var a = {};
a + 1 // return "[object Object]1"

我知道为什么会这样。 Object toPrimitive 发生了,在 a.toString 返回 [object Object] 之后与 number 合并 但是为什么当我输入这样的代码时

{} + 1 // return 1

对象没有转换成字符串?

还有为什么对象 toPrimitive 提示 Number 返回 0 当对象转换为数字时,这看起来是 valueOf 函数,为什么 valueOf 返回 0?

最佳答案

第一个是一个对象,你要添加带有数字的对象

var a = {};
a + 1 // return "[object Object]1"

第二个是 block statement不反对

{} + 1 // return 1

关于javascript - 对象的隐式类型强制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57240476/

相关文章:

javascript - JS/AJAX : Hide/Show select boxes

javascript - Phantomjs:在将其作为网页打开之前修改html dom

javascript - 使用 php 和 jquery 的重音问题

c++ - 我应该使用高分辨率时间类型作为参数来避免duration_casts吗?

c# - asp.net mvc 中的动态类型转换编辑操作 : how can I handle multiple datatypes without throwing an exception?

javascript - 使用 drawImage/putImageData 的 Canvas 意外结果/行为

powershell - 我应该如何处理返回不同类型值的函数和cmdlet?

c++ - 我如何强类型定义非原始类型?

c# - 整数转换中的字节移位问题

python - 在保持类型的特定类型 REST 端点上执行通用函数