一、数据类型概述
在javascript中数据类型可分为两大类:基本数据类型和复杂数据类型。可用typeof()来查看数据类型。
基本数据类型:null、undefined、number,string,boolean。
复杂数据类型:object。
其中对象是object,array是object,function是object,万物皆是对象。
二、数据类型的转化
1、强制转换或显示转换
①、Number()
Number()方法,先看完整个内容,然后整体去转换数字。
如:
console.log(Number("11"));//控制台输出的是:11 console.log(Number("11aaa"));//控制台输出的是:NaN console.log(Number(["2"]));//控制台输出的是2,此时得到的是数组第0个的值 console.log(Number(["2","3"]));//控制台输出的是NaN console.log(Number(true));//控制台输出的是1,false输出的是0
②、parseInt()方法,从左向右去查看需要转换的目标,如果碰到一位是非数字的,结束执行,返回之前的数字。不可识别小数点。
如:
console.log(parseInt("111aaa"));//控制台输出111 console.log(parseInt("1.11aa"));//控制台输出1
③、parseFloat()方法,从左向右去查看需要转换的目标,如果碰到一位是非数字的,结束执行,返回之前的数字。可识别小数点。
如:
console.log(parseFloat("1.111aaa"));//控制台输出1.111
④、String()
如:
console.log(String(111));//控制台输出111
⑤、toString()
如:
var str=111; console,log(str.toString());//控制台输出111
⑥、Boolean()方法 布尔值转换 它对空字符串的转换为false,非空格字符串则为true。真:true,非空字符串,非0数字,非空对象,假: false, 空字符串,0,NaN,null,undefined。
如:
console.log(Boolean("111"));//控制台输出true console.log(Boolean(""));//控制台输出false console.log(Boolean(undefined));//控制台输出false console.log(Boolean(NaN));//控制台输出false console.log(Boolean(111));//控制台输出true
2、隐示转换
①、当出现+号时,当加号左右两测有一位是字符串是,会把另外一也转成字符串;两边没有字符串时,优先尝试把左右两侧都转换成数字,如果不能转换成数字就转换成字符串进行连接;
如:
console.log("1"+1);//控制台输出11 console.log(1+1);//控制台输出2 console.log(1+true);//控制台输出2 console.log(1+false);//控制台输出1
②、其他运算符
-,*,/,% 这些运算符都是只有数字运算的功能,所以在使用的时候,都会去把其他类型转换成数字。
如:
console.log(3 % "2");//控制台输出0,先把“2”转换成2,再进行计算
③、关系运算符
<、>、<=、>=、==、!=、===、!==
比较后都会返回布尔值
== 和 != 会进行隐式类型转换,把左右两侧的数据类型转换成一样的之后,再去比较
===和!== 进行比较的时候,也会比较数据类型,数据类型不一样的话,即使值一样,也是false.
&& 与、 || 或 、! 否 返回的结果都是 true和 false。
三、值类型与引用类型
在JavaScript中值类型和引用类型有哪些呢?
值类型:number、boolean、null、undefined、string
引用类型:object、array、function
1、所谓的值类型我们可以理解成复印件,每次要使用都是复印一份新得出来,不会对原件造成影响。
如:
var str1 = "hello world!"; var str2 = str1; str2="hi world!"; console.log(str1);//控制台输出hello world! console.log(str2);//控制台输出hi world!
值类型传递变量时其实是分配了一个新的空间,改变值互不影响。
2、所谓的引用类型我们可以理解成原件,每次使用都是使用同一个东西,一旦值发生改变就会对所有有使用的地方发生影响。
如:
var str1 = ["hello world!"]; var str2 = str1; str2[0]="hi world!"; console.log(str1[0]);//控制台输出hi world! console.log(str2[0]);//控制台输出hi world!
在示例中,我们可以看到我们只是改变了str[0]的值,str1[0]的值也随之改变,这便是引用类型的特性。