javascript typeof 类型转换

JavaScript有五个基本的值类型:number、string、boolean、null和undefined。
除了null和undefined以外,其他三个具有所谓的基本包装对象。可以使用内置构造函数Number()、String()、Boolean()创建包装对象
boolean是JS的6种数据类型(number,string,object,boolean,null,undefined)之一,有且只有两种值:true和false
一、六种数据类型

  1. number
    1. 练习:
      1. var num = 1 * "1"; console.log(typeof(num) + " : " + num); ---->number : 1
      2. var num = 1 - "1"; console.log(typeof(num) + " : " + num); ---->number : 0
      3. var num = "2" * "1"; console.log(typeof(num) + " : " + num); ---->number : 2
      4. var num = 1 * "1"; console.log(typeof(num) + " : " + num); ---->number : 1
  2. string
  3. boolean
  4. undefined
  5. object:范范的引用值,比如数字、json等等;还有特殊的null,作为历史遗留问题,是用于占位的对象
  6. function:函数
二、作用
用于查看数据类型的
三、使用方法
  1. typeof(test)
  2. typeof test
四、显示类型转换和隐示类型转换
  1. 显示类型转换
    1. 分6种类型:
      1. Number(mix):
        1. 看起来不是数字的就不能转为数字,比如undefined,'abvc'
        2. null转为数字为0
        3. 练习:
          1. var num = Number('12'); console.log(typeof(num) + " : " + num); ---->number : 12
          2. var num = Number(true); console.log(typeof(num) + " : " + num); ---->number : 1
          3. var num = Number(false); console.log(typeof(num) + " : " + num); ---->number : 0
          4. var num = Number(null); console.log(typeof(num) + " : " + num); ---->number : 0
          5. var num = Number(undefined); console.log(typeof(num) + " : " + num); ---->number : NAN
          6. var num = Number('a'); console.log(typeof(num) + " : " + num); ---->number : NAN
          7. var num = Number('-12'); console.log(typeof(num) + " : " + num); ---->number : -12
          8. var num = Number('12abc'); console.log(typeof(num) + " : " + num); ---->number : NAN
      2. parseInt(string, radix):将目标进制radox为基底将string转换为十进制
        1. 转换为整型,其目的为把里面的东西转换为整型的数Z
        2. 从数字位开始往后看,看到非数字位截止,然后返回这段数字
          1. 练习:
            1. var num = parseInt('12'); console.log(typeof(num) + " : " + num); ---->number : 12
            2. var num = parseInt('12.3sdf'); console.log(typeof(num) + " : " + num); ---->number : 12
            3. var num = parseInt(true); console.log(typeof(num) + " : " + num); ---->number : NAN
            4. var num = parseInt(false); console.log(typeof(num) + " : " + num); ---->number : NAN
            5. var demo = '100px'; var num = parseInt(demo); console.log(num); ---->100
        3. parseInt(test, radix):将test转化为radix的进制格式,redix取值范围为2-36
          1. 练习:
            1. var demo='a'; var num = parseInt(demo, 16); console.log(typeof(num) + ":" + num); --->number : 10
      3. parseFloat(string)
        1. 转换为浮点数字
        2. 从数字位开始往后看,看到包括点的非数字位截止,然后返回这段数字
          1. 练习:
            1. var num = parseFloat('12.3sdf'); console.log(typeof(num) + " : " + num); ---->number : 12.3
      4. String(mix):致力于将内容转为字符串
      5. Boolean(mix):致力于将内容转为boolean(true|false)
        1. 除了以下六个值,其他都是自动转为true:null,undefined,+0,-0,"",NAN
      6. toString():target.toString(),即某对象将自己转为字符串
        1. 除了以下两个不能转其他都可以:undefined,nul
        2. PS:一般转字符串,就直接用+""就可以了
        3. toString()有个比较好玩的用法:toString(radix),以十进制为基底转换为目标进制
          1. 练习:
            1. var demo = 10; var num = demo.toString(8); console.log(num); --->12
            2. 将二进制的10101010转换为十六进制:
              1. var demo = 10101010; var num = parseInt(demo,2); var target = num.toString(16);
  2. 隐式类型转换:其转换规则为,调用的也是显示转换的规则
    1. isNaN(content):
      1. 判断内容是否为NAN,并且将结果返回回来
      2. 判断规则是:将content放到Number中,即Number(content)并返回结果, 将结果再和NaN比对,即Number(content)==NaN
      3. 练习:
        1. console.log(isNaN(null)); --->false
        2. console.log(isNaN(123)); --->false
        3. console.log(isNaN("NaN")); --->true
        4. console.log(isNaN(undefined)); --->true
        5. console.log(isNaN('1234abc')); --->true
    2. ++/--+/-(一元正负):其隐式类型装换调用的是Number()
      1. ++/--:对象在调用之前,先调用了Number(content),然后再进行++/--
        1. var a = '123'; a ++; console.log(a); -->124
        2. var a = 'abc'; a ++; console.log(typeof(a) + ":" + a); --> number : NaN
      2. +/-: 对象在调用之前,先调用了Number(content)
        1. var content = + "abc"; console.log(typeof(content)+ ":" + content); --> number: NaN
        2. var content = + "123"; console.log(typeof(content)+ ":" + content); --> number: 123
    3. +:其隐式类型装换调用的是String(),当+两侧有一个是字符串时,就会将两个都转换为字符串,作为连接符
    4. -*/%:其隐式类型装换调用的是Number()
      1. 练习
        1. var content = "1" * 1; console.log(typeof(content) + ":" + content); --> number:1;
        2. var content = "1" - 1; console.log(typeof(content) + ":" + content); --> number:0;
        3. var content = "1" / 1; console.log(typeof(content) + ":" + content); --> number:1;
        4. var content = "1" % 1; console.log(typeof(content) + ":" + content); --> number:0;
        5. var content = "asdf1" * 1; console.log(typeof(content) + ":" + content); --> number:NaN;
    5. && || !
    6. < > <= >=
      1. 当比较符两侧有数字类型时,则转换为数字比较
      2. 当比较符两侧有字符串类型时,则转换为字符串对应的ASIC比较
    7. == !=
补充:
console.log(a); --->报错:a is not defined
console.log(typeof(a)); -->undefined
console.log(typeof(typeof(a))); -->string
不发生类型转换的
=== 和!==,比较符两侧必须完全相等才可以
【javascript typeof 类型转换】

    推荐阅读