JS数据类型:
- 概念:
什么是数据类型?
数据类型就是将数据进行分类,分成几种不同的类型。
分类:
- 原始数据类型;
- 包装类型;
- 引用类型;
- 特殊类型
- 字符型
- 数字类型
- NaN——not a number(不是一个数字)
- 与任何值都不相等,包括自身。
- isNaN()判断是否是NaN
- 结果:true&false;
- NaN——not a number(不是一个数字)
- 布尔类型
- 只有两个值——true&false;
- 作用——一般用于开关
原始数据类型:
提供了string、number和boolean类型
如何进行判断?typeof关键字
- typeof关键字
- 作用——可以用来判断当前值的类型;
- 注意——typeof只能当前值的原始类型。
typeof 两个及两个以上 typeof 返回值是一个 字符串类型 “string”。
instanceof 关键字
- 作用——类似于typeof关键字。用来判断当前值的类型;
- typeof判断原始数据类型;
- instanceof——判断包装类型。
- 语法结构
- 当前值(变量) instanof 包装类型的名称
- 结果
- true——说明当前值是指定的包装类型;
- false——说明当前值不是指定的包装类型
面试题:typeof和instanceof的区别?
答:三个不同一个相同。
包装类型
- String
- Number
- Blooean
总结——原始数据类型与包装数据类型的关系:原始数据类型是包装数据类型的实例对象。
特殊类型:
undefined
- 含义——未定义;
- undefined既是值,也是一个类型,undefined值中只有一个值——undefined。
- 得到undefined的情况:
- 只声明,但不赋值;
- 声明也赋值,值为undefined;
- 函数中不明确指定return——undefined-函数内容;
- 访问一个对象不存在的属性——undefined-对象内容。
null
- 含义——空
- null是什么类型?object
- null值是object(对象)的一个特殊值
- 注意:null并不是一个类型,而是一个值。
null==undefined
两者是相等的。null或undefined与其他数据类型比较都不相等.
- null与undefined之间的相同和不同点:
- 共同点:null和undefined都代表空
- 不同点:
- null是object类型,存在,不指向任何值。
- undefined是undefined类型,存在,但是没值。
typeof(null);
结果是object!typeof(undefined);
结果是undefined!
- 作用:null常用的一个作用是:释放资源!
面试题:null和undefined的共同点和不同点是什么?
类型转换
隐式类型转换:没有明确的转换方式
- 转换成字符串:”“+值=字符串;
- 转换成number类型:+值=数字值;
- 结果:
转化数字之后的答案只有,要么是数字,要么是NaN.
- 字符串的文本内容是数字值——成功地转换为数字值。
- 字符串的文本内容是文本值——转换成NaN.
- 字符串内容是”“的话——转换成0.
- Number();转化
NaN转化后NaN;
null转化后为0;
undefined转化后为NaN.
对象–> 数字:
{}.toString() –> “[object Object]” –> NaN
[].toString() –> “” –> 0
- 结果:
- 转换成布尔值:!!值=布尔值;
- 结果:只有false和true!
- 注意:转换成布尔值
结果为false的五种:"",NaN,0,undefined,null.其余全是true
。
注意:在实际开发中,隐式转换是类型的自动转换机制。
显示类型转换:有明确的转换方式
- 转换成字符串;——String();
- 提供了一个转换方法——toString();
- 注意:在null和undefined中没有toString()方法,所以如果对这两个值调用toString()会报错!
- 注意将数字使用该方法转化成字符串时的方法,如果是数字值不能直接调用,先定义数字值的变量,再通过该变量调用toString();
- 转换成数字值;——Number();
- 整型——parseInt();
- 浮点型——parsefloat();
- 转换成布尔值;——Bollean();
- 转换成字符串;——String();
运算符
算术运算符
- 求余运算符:第一个计算值%第二个计算值
- 当第一个计算值为负值时——求余后得值就是负值;
- 当第一个计算值为正值时——求余后得到的值就是正值。
- 自增(减)运算符
- ++自增运算符——每次增加1;a++先赋值再自加,++a先加再复制。
- –自减运算符——每次减1。
- 算术运算符的优先级别
- 第一级别—— ++ 和 – .
- 第二级别—— * 和 /。
- 第三级别—— + 和 -。
- 注意:自增或者自减运算符,被应用在复杂的计算表达式中,结果会报错。所以我们先将需要自增或者自减的值赋值给一个变量。
比较运算符
- 相等与不等
- 只是完成值的判断,和数据类型无关。
- 全等与全不等
- 既判断值,也判断类型。
- 场景——一般用于number类型值判断
逻辑运算符
- 逻辑与运算符&&
- 逻辑或运算符||
- 逻辑非运算符!!
逻辑短路原则:
赋值运算符
- “=”定义变量时,进行赋值
- 特殊写法:
- +=:A+=B——A=A+B
- -=
- *=
- /=
- %=
- 好处——性能好
字符串连接符(+)
- 当运算表达式中,有一个或两个是字符串时-(+)表示连接符;
- 结果——将两个字符串进行拼接
- 注意——如果只有一个是字符串,另一个不是字符串
- 数字值或布尔值,都将其一样转化成字符串,再进行拼接。
- 注意:只有出现字符串时,“+”叫做连接符,执行的是拼接字符串;只要没有字符串,“+”都叫做加法计算,值先转换成布尔值再进行计算。