数据类型相互转换-转为字符串

转换规则

@1 拿字符串包起来
@2 特殊:Object.prototype.toString

出现情况

@1 String([val]) 遇到对象有三个步骤

  • 先调用对象的Symbol.toPrimitive方法,如果不存在这个方法
  • 再调用对象的valueOf()获取原始值,如果获取的不是原始值(基本数据类型)
  • 再调用对象的toString()方法,将其转变为字符串

@2 [val].toString():arr.toString() -> ''(空串)    obj.toString()->'[object Object]',但是
Object.prototype.toString.call([])->'[object Array]'
@3 '+'除数学运算,还可能代表字符串拼接

  • 有两边,一边是字符串或是对象,会以字符串拼接的规则处理(对象需要转字符串String([val]))
  • 有两边,不是字符串或者对象,则转数字后处理(Number([val]))
  • 只出现在左边:代表数学运算,将val转为number(Number([val]))
    ...
      // 100 + 1 + 21.2 + 0 + NaN = NaN 之后进行字符串拼接
      // 'NaN' + 'Tencent' + '' + 'null' + '9' + 'false' + '[object Object]'
      let res = 100 + true + 21.2 + null + undefined + 'Tencent' + [] + null + 9 + false + {}
      console.log(res); // 'NaNTencentnull9false[object Object]'
     let num = '-1'
     num = +num
     console.log(typeof num, num); // 'number' -1

你可能感兴趣的:(数据类型相互转换-转为字符串)