javascript - 有人可以向我解释一下为什么这段代码返回 1

标签 javascript object

为什么这段代码返回1,toString方法甚至没有在任何地方调用,+运算符应该将其操作数转换为数字,但我尝试了这个并返回NaN

+{} // NaN
+{a: 2} //NaN

那么为什么这段代码返回 1 ???

+({x:+null , y : +'001' , toString : function(){return this.x+this.y;}})

最佳答案

+({x:+null , y : +'001' , toString : function(){return this.x+this.y;}})

您正在重载toString哪个函数返回 (+null+'001')

+null 将 null 强制为 0;

+'001' 将字符串强制为 1

您正在从 toString 返回 1。

在前面的情况下,对象文字的非重载 toString 方法的结果是 "[object Object]"强制转换为数字会得到 NaN。

这里唯一重要的是 toString(无论是否重载)返回的内容。

关于javascript - 有人可以向我解释一下为什么这段代码返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52471230/

相关文章:

javascript - 使用 Twilio 将消息转发到另一个号码

javascript - 如何使用 javascript/Angular 重命名现有对象键?

javascript - 在 Javascript 对象数组中查找属性名称

VB.Net 对象列表在出错后意外清除

javascript - Lodash flatMap 扁平化对象

javascript - 在 `this` 方法之外向 `constructor()` 添加新属性是否被认为是不好的做法?

javascript - Bootstrap 向导 : onPrevious not working with if index?

javascript - jKey(JavaScript 快捷键插件)问题

Javascript console.log() 运行附加代码

javascript - 如何动态合并对象数组