9.3
1.数据类型
1.1.Object 对象
对象:一切皆对象
面向过程:按照时间的发生顺序,从上往下依次执行
对象对象:指挥对象做某件事
1.2.数据类型的检测
1.3.数据类型转换
1.自动转换:js会通过关系运算符,逻辑运算符,算数运算符,if语句等实现隐式转换根据需要自动进行类型转换,但是转换时会遵循一定的规则
2.强行转换->通过内置对象的方法强制转换,比如:parseInt(),parseFloat(),Number(),String(),Boolean(),toString()
1.3.1常见数据类型的字符串类型转换
类型 | 转换字符串型后的结果 |
number | NaN、0、或数值对应的字符串 |
null | "null" |
boolean | "true"、"false" |
undefined | "undefined" |
object | 若对象存在为其toString()方法的值,若对象不存在为"undefined" |
1.3.2.常见数据类型的数字类型转换
类型 | 转换为数字型后的结果 |
string | 若内容为数字则为相应数字,否则为NaN |
null | 0 |
boolean | true转为1,false转为0 |
undefined | NaN |
object | NaN |
注意:数学运算(特殊情况:‘+’在出现字符串的情况下不是数学运算,而是字符串的拼接)
强制转换 Number()
按照自动转换规则转换 parseInt(string) 、parseFloat(string)
isNaN() 函数用于检查其参数是否是非数字值
1.3.3.常见数据类型转为布尔类型
类型 | 转换布尔型后的结果 |
""或'' | FALSE |
0或0.0 | FALSE |
NaN | FALSE |
undefined | FALSE |
null | FALSE |
其它 | TRUE |
强制转换 Boolean()
1.3.4.比较时的数据转换
在==比较的过程中,数据转换的规则 类型一样的几个特殊点:
{} == {} false,对象对比的是堆内存的地址
[] == [] false
NaN == NaN false
类型不一样的转换规则:
-
null == undefined true,但是换成 === 结果是false(因为类型不一致),剩下null/undefined和其他任何数据类型值都不相等
-
字符串 == 对象,要把对象转为字符串
-
剩下如果 == 两边数据类型不一致,都是需要转换为数字再进行比较
如果类型都是字符串,就会按照ASCII编码的进行对比
2.运算符
2.1.算术运算符
一共有七种类型,分别是+(相加),-(相减), *(相乘),/(相除),%(余数),++(自增),--(自减)。
注意
1.+在与字符串相加时,表示拼接
2.当自增自减与赋值相结合时,++/--在前表示先自增在赋值,++/--在后表示先赋值在自增
2.2.赋值运算符
=,+=,-=,*=,/=,%=
其中
1.= 表示赋值
var a = 10;
var arr = ['张三','李四','王武','孙刘','马奇']
2.表示给num+1,再把相加之后的结果赋给num这个变量
var i=10;
i+=1 // i=i+1 效果一样 i++