【六种基本数据类型】javascript
number
string
boolean
null
undefined
sysbol
【两大类引用数据类型】java
对象 object数组
函数 function浏览器
真实项目中,根据需求,咱们每每须要把数据类型之间进行转换:bash
1.发生的状况
函数
isNaN('3') =>false
Number('3')->3
isNaN(3)->false
isNaN('3px') =>true
Number('3px')->NaN
isNaN(NaN)->true
复制代码
'3'-1 =>2
Number('3')->3
3-1->2
'3px'-1 =>NaN
'3px'+1 =>'3px1' 字符串拼接
复制代码
var i='3';
i=i+1; =>'31'
i+=1; =>'31'
i++; =>4 i++就是单纯的数学运算,已经摒弃掉字符串拼接的规则
复制代码
2.转换规律
ui
//=>转换的方法:Number(浏览器自行转换都是基于这个方法完成的)
【把字符串转换为数字】
只要遇到一个非有效数字字符,结果就是NaN
'' ->0
' ' ->0 空格(Space)
'\n' ->0 换行符(Enter)
'\t' ->0 制表符(Tab)
【把布尔转换为数字】
true ->1
false ->0
【把没有转换为数字】
null ->0
undefined ->NaN
【把引用类型值转换为数字】
首先都先转换为字符串(toString),而后再转换为数字(Number)
复制代码
1.发生的状况
spa
alert(1) =>'1'
复制代码
var n=Math.PI;//=>获取圆周率:
n.toFixed(2) =>'3.14'
var ary=[12,23,34];
ary.join('+') =>'12+23+34'
复制代码
2.转换规律
code
//=>调用的方法:toString
【除了对象,都是你理解的转换结果】
1 ->'1'
NaN ->'NaN'
null ->'null'
[] ->''
[13] ->'13'
[12,23] ->'12,23'
...
【对象】
{name:'xxx'} ->'[object Object]'
{} ->'[object Object]'
无论是啥样的普通对象,最后结果都同样
复制代码
1.发生的状况
对象
if(n){
//=>把n的值转换为布尔验证条件真假
}
if('3px'+3){
//=>先计算表达式的结果'3px3',把结果转换为布尔true,条件成立
}
复制代码
2.转换的规律
只有“0/NaN/' '/null/undefined”五个值转换为布尔的false,其他都是转换为true
//=>当表达式中出现字符串,就是字符串拼接,不然就是数学运算
1+true =>2 数学运算
'1'+true =>'1true' 字符串拼接
[12]+10 =>'1210' 虽然如今没看见字符串,可是引用类型转换为数字,首先会转换为字符串,因此变为了字符串拼接
({})+10 =>"[object Object]10"
[]+10 =>"10"
{}+10 =>10 这个和以上说的没有半毛钱关系,由于它根本就不是数学运算,也不是字符串拼接,它是两部分代码
{} 表明一个代码块(块级做用域)
+10 才是咱们的操做
严格写法:{}; +10;
复制代码
题目:
12+true+false+null+undefined+[]+'你好'+null+undefined+[]+true =>'NaN你好nullundefinedtrue'
复制代码
12+true ->13
13+false ->13
13+null ->13
13+undefined ->NaN
NaN+[] ->'NaN'
'NaN'+'珠峰' ->'NaN珠峰'
...
'NaN珠峰trueundefined'
'NaN珠峰trueundefined'+[] ->'NaN珠峰trueundefined'
...
=>'NaN珠峰trueundefinedtrue'
复制代码
对象==对象:不必定相等,由于对象操做的是引用地址,地址不相同则不相等
{name:'xxx'}=={name:'xxx'} =>false
[]==[] =>false
var obj1={};
var obj2=obj1;
obj1==obj2 =>true
复制代码
不一样状况的比较,都是把其它值转换为数字,而后再进行比较的:
对象==数字:把对象转换为数字
对象==布尔:把对象转换为数字,把布尔也转换为数字
对象==字符串:把对象转换为字符串,把字符串也转换为数字
字符串==数字:字符串转换为数字
字符串==布尔:都转换为数字
布尔==数字:把布尔转换为数字
复制代码
重点记忆:
null==undefined:true
null===undefined:false
null&&undefined和其它值都不相等
NaN==NaN:false
NaN和谁都不相等包括本身
复制代码
小例子:
1==true =>true
1==false =>false
2==true =>false 规律不要混淆,这里是把true变为数字1
[]==true:false 都转换为数字 0==1
![]==true:false
[]==false:true 都转换为数字 0==0
![]==false:true 先算![],把数组转换为布尔取反=>false =>false==false
复制代码