JavaScript 中的数据按存储方式的不同,分为值类型和引用类型。
-
值类型(6种):变量中存储的数据的值 —— 数值、字符串、布尔值、null 、undefined,Symbol
-
引用类型(1种):变量中存储的是数据的引用地址—— 对象 Object
- 函数是特殊的引用类型,因为函数引用的地址指向的内容不是一个数值,而是一段可执行代码。
数据类型检测 typeof
参数 | 返回值 |
---|---|
数值 | number |
字符串 | string |
布尔型 | boolean |
undefined | undefined |
null | object |
Symbol 数据 | symbol |
NaN | number |
Infinity | number |
函数 | function |
class类 | function |
数组等对象 | object |
数值 Number
let n = 1
typeof n // "number"
- 严格模式中,禁止使用0开头的数字表示法
- 数值的原型是 Number 对象
Number 对象的方法 | 功能 |
---|---|
Number.isNaN() | 判断是否为NaN |
Number.isInteger() | 判断是否为整数 |
Number.isFinite() | 判断是否为有限数值 |
Number.toFixed( 小数点位数 ) | 四舍五入 |
- 指数表示法
e 后面的数字是 10 的指数
2e+3; // 2000
NaN
运算失败时会返回 NaN
console.log("abc" / 18); // 结果是 NaN
NaN的数据类型也是数值,但表示Not a Number,非数值。
-
只要算术运算中存在一个NaN,整个运算就会失败,并返回NaN
> 1 + 2 + NaN; NaN
-
Undefined和任何数值计算的结果为NaN。
-
NaN 与任何值都不相等,包括 NaN 本身。
判断是否为可计算的数字
数据类型为数值,且不是NaN
function isNumber(value) {
return typeof value==='number' && !Number.isNaN(value);
}
【实战】数值格式化
let num = 3.145;
// 保留两位小数 -- 不会改变原数据
num.toFixed(2); // 3.15
// 上舍入取整(ceil 天花板) -- 不会改变原数据
Math.ceil(num); // 4
// 下舍入取整(floor 地板) -- 不会改变原数据
Math.floor(num); // 3
字符串 String
typeof 'abc' // string
https://blog.csdn.net/weixin_41192489/article/details/140371785
布尔值 Boolean
只有 2 个值
- true 真
- false 假
typeof true // boolean
空值 Null
只有 1 个值 null
,表示一个空指针对象
typeof null // "object"
null 的使用场景
// 给变量赋初始值(不确定未来变量的数据类型时使用)
let a = null;
// 获取指定DOM元素对象失败(页面上没有指定的DOM元素时),会得到 null
document.querySelector("#id");
// 正则表达式匹配失败时,会得到 null
"test".match(/a/);
null 的运算特点
- 数值运算时,相当于 0
- 布尔运算时,相当于 false
- 字符串合并时,相当于 ‘null’
10 + null // 得到 10
1 * null // 得到 0
!null; // 得到 true
"value: " + null; //得到 "value: null"
未定义 Undefined
只有 1 个值 undefined
,表示变量未定义
typeof undefined // "undefined"
undefined的使用场景
// 只声明但无初始值的变量,值为 undefined
let a;
// 访问对象中不存在的属性,得到 undefined
let me = { name: "朝阳" };
let age = me.age; // age 会被赋值 undefined
// 无返回值的函数调用后的返回值为 undefined
function foo() {}
console.log(foo()); // undefined
// 未传值的形参是 undefined
function foo(param1, param2, param3) {
console.log(param3);
}
foo(1, 2); // undefined
唯一值 Symbol
ES6 新增语法,详见
https://blog.csdn.net/weixin_41192489/article/details/139954197
对象 Object
https://blog.csdn.net/weixin_41192489/article/details/140379356