javascript类型转换

130 阅读2分钟
  • 内置类型:null,undefined,string,number,boolean,symbol
  • Symbol实例是唯一且不可改变的
    Symbol(1)==Symbol(1)//false
  • 获取元素类型 Object.prototype.toString.call(x)
    let a=1;
    console.log(Object.prototype.toString.call(a))//"[object Number]"
    let b=[]
    console.log(Object.prototype.toString.call(b))//"[object Array]"
    let d;
    console.log(Object.prototype.toString.call(d))//"[object Undefined]"
    let c=null
    console.log(Object.prototype.toString.call(c))//"[object Null]"
  • 条件判断:在条件判断时,除了undefined,null,false,NaN,'',0,-0,转为false,其他的值都转为true,包括所有的对象

  • JavaScript对象转为基本类型 对象转化为基本数据类型,始终调用对象自带的valueOf和toString两个方法,并获得其返回值,作为其基本数据类型。

valueOf() 返回指定对象的原始值

  • Array返回数组对象本身
  • Boolean 返回布尔值
  • Date 存储的时间是从1970年1月1日午夜开始计的毫米数
  • Function 返回本身
  • Number 数字值
  • Object 对象本身
  • String 字符串值
  • Math 和 Error对象没有valueOf方法

toString()

  • 每个Objext对象都包含该方法
  • 当Object对象以字符串方式移动时会被自动调用
  • 默认调用时返回[object type]
    Object.prototype.valueOf()//返回指定对象的原始值
    Object.prototype.toString()//返回对象的字符串表示
    a='1'
    "1"
    a.valueOf()
    "1"
    b='fsafds'
    "fsafds"
    b.valueOf()
    "fsafds"
    a=new Date()
    Thu Dec 06 2018 22:25:39 GMT+0800 (中国标准时间)
    a.valueOf()
    1544106339540
    [].valueOf()
    []
    [].toString()
    ""
    true.valueOf()
    true
    true.toString()
    "true"
    new String('1').valueOf()
    "1"
    new String('1').toString()
    "1"
    b={}
    {}
    b.valueOf()
    {}
    b.toString()
    "[object Object]"
    [1].valueOf()
    [1]0: 1 length: 1__proto__: Array(0)
    [1].toString()
    "1"
    [1,2,3].toString()
    "1,2,3"

比较运算,操作符 ==

比较运算 x==y,x和y是值,产生true或者false

  • 若typeof(x)与typeof(y)相同,则
    • 若typeof(x) 为 undefined,则返回true
    • 若typeof(x) 为 null,返回true
    • 若typeof(x) 为 number,则
      1. 若x为NaN,返回false
      2. 若y为NaN,返回false
            Number('sfd')==Number('fsdfds')//false
        
      3. 若x与y为相等数值,返回true
      4. 若x为+0且y为-0,返回true
      5. 若x为-0且y为+0,返回true
    • 若typeof(x) 为string,则当x和y为完全相同的字符序列时返回true,否则返回false
    • 若typeof(x) 为boolean,x和y相同时返回true,否则返回 false
  • 若x为null且y为undefined,返回true
  • 若x为undefined且y为null,返回true
  • 若x为typeof(x)为number,且typeof(y)为stirng,比较 x==Number(y)的结果
  • 若x为string,y为number,返回比较Number(x)==y
  • 若x为boolean,返回Number(x)==y 的结果
  • 若y为boolean,返回 x==Number(y)的结果
  • 若 x为string或number,且type(y)为Object,返回 x与y对象转基本类型