1. Number
- JavaScript 只有一种数字类型 Number:不带小数点的是整型;带小数点的是浮点类型,浮点数值在某些语言中也被称为双精度类型
- 默认是十进制
- 前缀0b:二进制;数码范围 0-1
- 前缀0o:八进制;数码范围 0-7
- 前缀0x:十六进制;数码范围 0-9,A-F
- 永远不要比较两个浮点数的相等
- 控制台输出时,显式蓝色
let num1 = 10;
let num2 = 0b10;
let num3 = 0o10;
let num4 = 0x10;
NaN:为捕获异常,系统还有一个特别的值:非数值 NaN - Not a Number;这个数值用于表示一个本来要返回数值的操作数却未返回数值的情况,这样就不会抛出错误了
NaN 与任何值都不相等,包括 NaN 本身
isNaN():在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"或 Boolean 值。不能被转换为数值的值都会导致这个函数返回 true
console.log(NaN == NaN);//false
2. String
- 字符序列 - a sequence of characters
- 字符串可以由双引号(")或单引号(')表示,但是不能混用
- 可以使用转义字符,如 \t
- 可以使用十六进制表示1个字符,如 \xnn
- 可以使用十六进制表示1个 Unicode 字符,如 \unnnn
- 把一个数值转换为一个字符串,可以使用 toString() 或简单和1个空串拼接;toString() 也可以指定基数
- 表单和 prompt 输入框获取到的数据默认都是字符串类型
- 加号 +/- 可以将字符串数字转换为数字
- 字符串数字 - 可以转换为数字
- 控制台输出时,显式黑色
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
字符串可以看作是一个特殊的数组,可以使用数组的相关函数,如数组解构
console.log([...'hello']);//输出5个字符的数组
3. Boolean
- 只有两个字面值:true 和 false
- 任何非空对象、非零数值、非空字符串都可以转换为 true;其他转换为 false;应确切地知道在流控制语句中使用的是什么变量
let flag1 = true
let flag2 = 1 > 2
4. Undefined
- 未声明或声明了变量但未初始化;因为 JavaScript 的弱类型特点,系统不知道你会保存什么类型的数据,且每个类型的数据默认值是不一样的,所以干脆给个未定义
- 只有1个值 undefined
- 一般而言,不要显式地把一个变量设置为 undefined - You'd rarely see code setting a value of a variable as undefined explicity!
- 为方便使用,应显式地初始化变量为某个特定的值
let a;
console.log(typeof a);//undefined
console.log(typeof b);//undefined
5. Null
- 这个数据类型只有1个值:null
- 表示1个空对象指针;所以它是一个对象
- 如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null 而不是其他值
- 将变量的值设置为 null 可以清空变量
- 可以看作是占了一个位置
- null 和 undefined 的相等操作符(==)总是返回 true,但它们的用途完全不同
- 更多信息,请访问 判断空值 undefined 和 null
var obj = null;
console.log(typeof obj);//object
console.log(null == undefined);//true
console.log(null === undefined);//false;null and undefined are not identical
常用类型转换方法
item |
desc |
Number() |
转换为数值类型 |
parseInt() |
转换为整型 |
parseFloat() |
转换为浮点类型 |
console.log(parseInt('070'));//70
console.log(parseInt('hi70'));//NaN
console.log(parseInt('12.4px'));//12
console.log(parseFloat('12.4px'));//12.4
// 指定基数
console.log(parseInt('070', 8));
console.log(parseInt('70', 16));
console.log(parseInt('0x70', 16));//0x甚至可以省略
[] 计算器
let num0 = document.querySelector('#num0');
let num1 = document.querySelector('#num1');
let btn = document.querySelector('#btn');
btn.addEventListener('click', () => {
let res = parseInt(num0.value) + parseInt(num1.value);
if (isNaN(res)) {
alert('输入错误,请重试!');
} else {
alert(res);
}
})