JavaScript的数据类型及各类型之间的相互转换

JS数据类型

  1. 基本数据类型(五种,ES6加了一种Symbol)

    • String ------ 字符串类型,右数字字母字符串以及标点符号组成,必须放在单引号或者双引号中

      字符串有length属性,用双引号 "hello"或 单引号'123ere'表示都可以;如果字符串里包含有特殊字符,如"he said \'hello\'.",需要用转义符\,表示后面紧跟的是特殊字符。

    • Number ------ 数字类型 ,包括整数型浮点型

      数值有多种表示方法,比如说字面量和科学计数法,当数值的小数点的前面位数超过21位或者小数点后的零多于5个的时候,JS会自动将数值用科学计数法表示,其它情况直接用字面量表示。

      对于数值中的整数,有四种进制可以表示,分别是二进制(以0b开头)、八进制(以0开头)、十进制(没有前导数字)、十六进制(0x开头)。

      除了常规的数字,还有几种特殊的数值,+0、-0、NaN、Infinity(后面具体介绍)

    • Boolean ------ 布尔类型,只有true和false两种值

    • Null ------- 空对象类型,表示被定义了,但是定义的是空值

    • Undefined ------ 未定义,一般指的是已经声明,但是没有赋值的变量,如var a

  2. 引用类型

    • Object(由一堆属性和方法组成的集合)

另一种分组方式

​ 值类型:Number、String、Boolean、Null和Undefined

​ 引用类型:Object、Array、Function等

​ 值类型的数据存储在栈中;而引用类型的数据存储在堆中,栈中只存对应堆的地址。

typeof()

用于判断数据类型,返回值为6个字符串,分别为stringBooleannumberfunctionobjectundefined

  var a = ['a',2,null],
        b = 34,
        c = 'adsfas',
        d = function(){console.log('我是函数')},
        e = ture,
        f = null,
        g;

        console.log(typeof(a));//object
        console.log(typeof(b));//number
        console.log(typeof(c));//string
        console.log(typeof(d));//function
        console.log(typeof(e));//boolean
        console.log(typeof(f));//object
        console.log(typeof(g));//undefined

数据类型之间的转换

1.转成String

JS六种数据类型均可转成string,可使用toString()方法 或者+'',需要注意字符串里的符号。

2.转成Number

JS提供了parseInt()用于转换成整数,和parseFloat()用于转换成浮点数。parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的,

parseInt("1234blue");   //returns   1234  
parseInt("0xA");   //returns   10  
parseInt("22.5");   //returns   22  
parseInt("blue");   //returns   NaN  

parseInt("AF", 16);   //returns   175  
parseInt("10", 2);   //returns   2  
parseInt("10", 8);   //returns   8  
parseInt("10", 10);   //returns   10  

parseInt("010");   //returns   8  
parseInt("010", 8);   //returns   8  
parseInt("010", 10);   //returns   10  如果十进制有前导0,那么必须加上基10,否则会当成八进制处理

parseFloat()方法没有基模式,必须由十进制数来表示浮点数

parseFloat("1234blue");   //returns   1234.0  
parseFloat("0xA");   //returns   NaN  
parseFloat("22.5");   //returns   22.5  
parseFloat("22.34.5");   //returns   22.34  
parseFloat("0908");   //returns   908  
parseFloat("blue");   //returns   NaN  

另外,可以用value - 0的方式快速获得数值。

3.转成Boolean值

Boolean(value),通常用于条件判断里面,if(value){},除了以下五个值Null、undefined、0(-0,+0)、''为false之外,其它所有均为true。

除此之外,可以用!!value来直接获得Boolean值,这样比较简便。

4.强制转换

Boolean(value)——把给定的值转换成Boolean型; (遵循以上规律)

Number(value)——把给定的值转换成数字(可以是整数或浮点数)

Number(false)                 // 0  
Number(true)                  // 1  
Number(undefined)             // NaN  
Number(null)                  // 0  
Number( "5.5 ")               // 5.5  
Number( "56 ")                // 56  
Number( "5.6.7 ")             // NaN  
Number(new   Object())        // NaN  
Number(100)                   // 100  

String(value)——把给定的值转换成字符串

var s1 = String(null);   //"null"  强制转换
var oNull = null;  
var s2 = oNull.toString();   //won't work, causes an error  

误区

关于"==""==="

JavaScript是一门弱类型语言,表达式运算赋值等操作都会导致类型转换。

"==": 叫“相等运算符”,两边值类型不同的时候,要先进行类型转换为同一类型后,再比较值是否相等

"===":叫“严格运算符”,不做类型转换,类型不同的结果一定不等

var a = 1,b = '1'
a == b      //true
a === b     //false

你可能感兴趣的:(JavaScript的数据类型及各类型之间的相互转换)