隐式转换:后端操作无错误使用res.json()数据打印成[object object]

后端使用node.js+express框架返回数据,代码均无错误,经查询发现是因为前端接收数据的时候

axios.get(`http://localhost:4000/search/users?q=${keyword}`).
    then((response) => { console.log('data:'+response.data.items) ;
    this.props.saveUsers(response.data.items)},
      (err) => { console.log('err' + err.message) })
  }

其中'data:'+response.data.items中字符串与json数据一起使用,+号存在着隐式转换,+号两边只要有一端是字符串,就会调用toString()将其拼接成为字符串,造成了打印的错误。

查看其他文章时发现,数字+布尔值(布尔值true会被转换为1,false会被转换为0)进行计算;一旦有字符串在旁边,则统一拼接为字符串。

引申:除了数字以外的其他类型使用+,也会被统一隐式转换

let test=[1,2,3]+[4,5,6];
console.log(test);// 1,2,34,5,6
console.log(typeof test);// string

具体来说,应该参照:

  • 当一侧为String类型,被识别为字符串拼接,并会优先将另一侧转换为字符串类型。
  • 当一侧为Number类型,另一侧为原始类型,则将原始类型转换为Number类型。
  • 当一侧为Number类型,另一侧为引用类型,将引用类型和Number类型转换成字符串后拼接。
  • 两侧都为引用类型,转换为字符串拼接。
  • 以上 4点,优先级从高到低
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值