问个js的类型转换问题?

{} + '123.33'

输出 123.33 这是为什么?

阅读 2.3k
3 个回答

{} 是一个空语句块。

上面相当于

{
}

+ '123.33'

首先这个存在隐式类型转换

  1. {} 被当作一个独立的空代码块(不执行任何操作)
  2. +"123.33" 这个也存在隐式转换,如果 + 的其中一个操作数是字符串,则执行字符串拼接;否则执行数字加法。此时+只有一个操作数,因此执行了加法,"123.33" 被转换为 Number123.33

更直观的体现为:

{ let a="" }+"123.33"

此时输出的也是 123.33
但是

let a={};
a+"123.33"

输出的就不是 123.33了 而是 "[object Object]123.33",这是因为隐式类型转换在对象和字符串转换时会调用对象的Object.prototype.toString(a) 然后和字符串"123.33"拼接

隐式类型转换

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题