JavaScript隐式转换与显示转换

JavaScript是一门弱类型语言,其灵活的设计初衷也带来了隐式转换的弊端;下面是对js数据类型转换的梳理es6

首先得知道js的数据类型6种基本数据类型与object设计

6种基本数据类型(含es6):nullundefinedstringnumberbooleansymbol(es6新增)

转换场景

基本数据类型的转换(不含symbol)

  • 算数运算符(如+-*/等等)的隐式转换:会将非number转换成number;注意,当+有一边为string时,+属于字符串链接符;其余数据类型转number的规则(此规则属于ecma标准,须要记忆):
原数据类型 转换成number后的结果
number number
string 纯数字的字符串会转成对应数字,含非数字的会转换成NaN
null 0
undefined NaN
boolean true => 1; false => 0
  • 其余非逻辑运算符(如==+>=)的隐式转换: 当有一边含有string时,会将非string的转成字符串来处理;其余数据类型转字符串的规则(此规则属于ecma标准,须要记忆):
原数据类型 转换成string后的结果
number 数字对应的string
null 'null'
undefined 'undefined'
boolean true => 'true'; false => 'false'
注意:不含symbol是由于symbol不能转换

非基本数据类型的转换

  • 非基本数据类型的对象会调用对应的转换方法来转换成基本数据类型,通常都会有valueOf与toString;若是转换方法的返回值为基本数据类型,则会拿此基本数据类型走基本数据类型转换的逻辑;若是两个方法都没有或者都没能转换成基本数据类型,则转换失败
  • Date会先调用toString,其余的会先调用valueOf
注意:两边都是对象时 ==运算符比较的是对象内存地址,
相关文章
相关标签/搜索