- 1. Undefined
-
.未声明或声明了变量但未初始化;因为 JavaScript 的弱类型特点,系统不知道你会保存什么类型的数据,且每个类型的数据默认值是不一样的,所以干脆给个未定义
.只有1个值 undefined
.一般而言,不要显式地把一个变量设置为 undefined
.为方便使用,应显式地初始化变量为某个特定的值
var a;
console.log(typeof a);//undefined
console.log(typeof b);//undefined
- 2. Null
-
.这个数据类型只有1个值:null
.表示1个空对象指针;所以它是一个对象
.如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null 而不是其他值
.将变量的值设置为 null 可以清空变量
.可以看作是占了一个位置
var obj = null;
console.log(typeof obj);//object
console.log(null === undefined);//false
console.log(null == undefined);//true
-
比较过程如下:如果两个值的类型相同,则直接比较它们的值; 如果两个值的类型不同,则进行类型转换后比较
- 3. Boolean
- .只有两个字面值:true 和 false
- .任何非空对象、非零数值、非空字符串都可以转换为 true;其他转换为 false;应确切地知道在流控制语句中使用的是什么变量
- 4. Number
- 4.1. 简介
- .JavaScript 只有一种数字类型 Number:不带小数点的是整型;带小数点的是浮点类型,浮点数值在某些语言中也被称为双精度类型
- .默认是十进制;前缀0表示八进制[0-7];前缀0x表示十六进制[0-9,A-F]
- .永远不要比较两个浮点数的相等
- 4.2. NaN
-
.为捕获异常,系统还有一个特别的值:非数值 NaN - Not a Number;这个数值用于表示一个本来要返回数值的操作数却未返回数值的情况,这样就不会抛出错误了
.NaN 与任何值都不相等,包括 NaN 本身
.isNaN():在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"或 Boolean 值。不能被转换为数值的值都会导致这个函数返回 true
console.log(NaN == NaN);//false
- 5. String
-
.字符串可以由双引号(")或单引号(')表示,但是不能混用
.可以使用转义字符,如 \t
.可以使用十六进制表示1个字符,如 \xnn
.可以使用十六进制表示1个 Unicode 字符,如 \unnnn
.把一个数值转换为一个字符串,可以使用 toString() 或简单和1个空串拼接;toString() 也可以指定基数
.表单和 prompt 输入框获取到的数据默认都是字符串类型
.字符串可以看作是一个特殊的数组,可以使用数组的相关函数,如数组解构
.加号 +/- 可以将字符串数字转换为数字
.字符串数字 - 可以转换为数字
console.log([...'hello']);//输出5个字符的数组
console.log('123');//黑色123
console.log(123 + '');//黑色123
console.log('123' - 0);//蓝色123
console.log(-'123');//蓝色-123
console.log(+'123');//蓝色123
console.log('123'-);//Error