number数字类型
包含: 常规数字、NaN
NaN
not a number: 不是一个数,但它属于数字类型
NaN和任何值(包括自己)都不相等: NaN!=NaN,所以我们不能用相等的方式判断是否为有效数字
isNaN
检测一个值是否为非有效数字,如果不是有效数字返回true,反之是有效数字返回false。
在使用后isNaN进行检测的时候,首先会验证检测的值是否为数字类型,如果不是,先基于Number()这个方法,把值转换为数字类型,然后再检测
把其它类型值转换为数字类型
- Number([val])
- parseInt/parseFloat([val],[进制]): 也是转换为数字的方法,对于字符串来说,它是从左到右一次查找有效数字字符,知道遇到非有效数字字符,停止查找(不管后面是否还有数字,都不在找了),把找到的当做数字返回
- ==进行比较的时候,可能要出现把其他类型的值转换为数字
string字符串数据类型
所有用单引号、双引号、反引号(撇 ES6模板字符串)包起来的都是字符串
把其他类型数值转换位字符串
- [val].toString()
- 字符串拼接
boolean布尔数据类型
只有两个值 true/false
把其他数据类型值转换为布尔类型
只有 0、NaN、’’、null、undefined 五个值转换为false,其余都转换为true(而且没有任何特殊情况)
- Boolean([val])
- !/!!
- 条件判断
null / undefined
null 和 undefined都代表的是没有
- null: 意料之中(一般都是开始不知道值,我们手动先设置null,后期再给予赋值操作)
let num = null; // =>let num = 0; 一般最好用null作为初始化空值,因为零不是空值,他在栈内存中有自己的存储空间(占了位置)
// ....
num = 12;
- undefined:意料之外(不是我能决定的)
let num;//=>创建一个变量没有赋值,默认值为undefined
// ....
num = 12;
object对象数据类型–普通对象
([key]:[value],…) 任何一个对象都是由零到多组键值对(属性名:属性值)组成的(并且属性名不能重复)
数组是特殊的对象数据类型