js中数组长度为1时且值为数值,为什么可以进行运算?

clipboard.png
忽略 undefined
开发过程中无意间碰到这个现象,求大神解释!

阅读 3.3k
3 个回答

js 遇到预期为数值的地方,就会将参数值自动转换为数值。系统内部会自动调用Number函数。
除了加法运算符(+)一般会把运算项转为字符串,其他运算符都会把运算项自动转成数值。
Number(arr)=1200
简单来说就是隐式转换,你可以试试arr+100,它应该等于"1200100"而不是1300

涉及到js的类型转换。

  1. 首先数组属于引用类型,做运算是要转为基本类型
  2. 然后做 - * / 运算时,需要把两边转为Number类型

所以大概步骤是:

  1. [100].valueOf().toString()
  2. Number([100].valueOf().toString()) / Number(10)

因为做 + 运算时数组最后是转为String类型,做字符串拼接,所以是 10010

数组名就是一个地址,指向数组的第一个元素(如果有的话)

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