typeof的返回值

1.number
2.string
3.boolean
4.object        (null...)
5.function
6.undefined

类型转换

1.显示类型转换

  • Number()

      Number(null)-->0
      Number(undefined)-->NaN
      将括号里面的转换为数字类型,如果不是数字转换为NaN
    
  • parseInt()

     将括号里面的转换为整型数字,小数点后面的直接去掉,parseInt(true).....都转换为NaN
     var demo = "10";
     var num = parseInt(demo,16);
     以16进制为基底进行转换为10进制
     
     var demo = "123abc";
     var num = parseInt(demo);
     num = 123;
     parseInt从数字位开始看,到非数字位截止
    
  • parseFloat()

      与parseInt()基本相同,从数字位开始,到第一个小数点后面非数字位截止
      var demo = "123.1abd";
      var num = parseInt(demo);
      num = 123.1
    
  • toString()

      var demo = 123;
      var num = demo.toString();
      将数字123转换为字符串"123"
      (undefined,null不可以使用toString方法)
    
      也可以实现进制之间的转换
      var demo = 10;
      var num = demo.toString(8);
      将十进制的10,转换为八进制num = 12
    
  • String()

      将括号里面的转换位字符串
    
  • Boolean()

      将括号里面转换为布尔值(true,false),除了(undefined,null,NaN,"",0,false)这6个值转换为false,其他都转换为true
    

2.隐式类型转换

隐式类型转换内部调用显示类型转换的方法

  • isNaN() -->Number()

      先将括号里的变量用Number方法进行转换,然后再将转换的结果与NaN进行比对,是就返回true,不是就返回false
    
  • ++/-- +/- --Number()

      调用的也是Number方法,转换后该值的类型为number
      当+号两边有一个为字符串类型时就调用String()方法
    
  • -*/% – Number()

      "a" * 1 --->Number("a") * Number(1) --->NaN *1
      转换后的类型为number
    
  • &&||!

  • < > <= >=

      当字符串与数字比较时,都转换为数字比较
    
      1>2>3  返回结果为false
      1>2的结果为false,再将false转换为0,0>3结果为false
    
  • == !=

      特殊(undefiner == null)
    

3.不发生类型转换

  ===和!==(绝对等于和绝对不等于)

4.补充

当a未定义
typeof(typeof(a))
最终的返回结果为string
最里面的typeof(a)返回结果为"undefined"字符串类型的undefined