持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
JS的数据类型
一共有8种
按照基本数据类型和引用类型分,如下:
基本数据类型: null、undefined、Number、String、boolean、Symbol、BigInt
引用数据类型: object
数据类型的原始值
null
null类型的值就是null,指代我们常说的空,表示缺少的标识或未指明对象的变量。
foo;
var animal;
在布尔运算中被认为是falsy (falsy是虚值)。
undefined
一个没有被赋值的变量会有个默认值 undefined,注意:undefined不是一个保留字,这说明我们可以使用undefined作为变量名,但这样不利于我们代码的维护和排错,所以在开发中我们要避免这样的行为。
void 0可以用来代替undefined
console.log(void 0 == undefined) //true
console.log(void 0 === undefined) //true
null和undefined的不同点
typeof null // "object"
typeof undefined // "undefined"
null === undefined // false
null == undefined // true
null === null // true
null == null // true
!null //true
isNaN(1 + null) // false
isNaN(1 + undefined) // true
数字类型Number和BigInt
数字类型是一种基于 IEEE 754 标准的双精度 64 位二进制格式的值,
Number.MAX_SAFE_INTEGER 常量表示在 JavaScript 中最大的安全整数(maxinum safe integer)(2^53 - 1)
Number.MIN_SAFE_INTEGER 代表在 JavaScript 中最小的安全的 integer 型数字 (-(2^53 - 1))
Number.isSafeInteger() 方法用来判断传入的参数值是否是一个“安全整数”(safe integer)
要检查值是否大于或小于 ±Infinity,你可以使用常量 Number.MAX_VALUE 和 Number.MIN_VALUE
BigInt 类型是 JavaScript 中的一个基础的数值类型,可以表示任意精度的整数。使用 BigInt,您可以安全地存储和操作大整数,甚至可以超过数字类型的安全整数限制。
BigInt 是通过在整数末尾附加字母 n 或调用构造函数来创建的。例如:1n。可以对 BigInt 使用运算符 +、*、-、** 和 %,就像对数字一样。BigInt 严格来说并不等同于一个数字,但它也同样可以轻松地使用。在将 BigInt 转换为 Boolean 时(例如:if、||、&&、Boolean 和 !),它的行为类似于一个数字。注意BigInt 不能与数字相互运算(会抛出TypeError)。
字符串类型String
var x = '';
x==false //true
x==0 //true
布尔类型Boolean
布尔表示一个逻辑实体,可以有两个值:true 和 false
如果省略该参数或参数值为 0、-0、null、false、NaN、undefined,或空字符串(""),则该对象具有的初始值为 false。所有其它值,包括任何对象,空数组([])或字符串 "false",都会创建一个初始值为 true 的对象。
总结一下:其值不是 undefined 或 null 的任何对象在传递给条件语句时都将计算为 true
注意不要将基本类型中的布尔值 true 和 false 与值为 true 和 false 的 Boolean 对象弄混了。
// 基本类型中的布尔值
var foo1 = true
// 值为true或false的Boolean对象
var foo2 = new Boolean(true)
var foo2 = new Boolean(false)
// if语句结果为true
const x = new Boolean(false);
if (x) {
// 这里的代码会被执行
console.log('aaa')
}
上述代码执行成功的原因
值得注意的是Boolean(false)本质仍是一个false
new Boolean(false) === true //false
new Boolean(false) == true //false
// if语句结果为false
const x = false;
if (x) {
// 这里的代码不会执行
console.log('bbb')
}
符号类型 Symbol
符号类型Symbol是唯一且不可修改的原始值 Symbol("foo") === Symbol("foo"); // false
Symbol() 函数会返回 symbol 类型的值,该类型具有静态属性和静态方法。它的静态属性会暴露几个内建的成员对象;它的静态方法会暴露全局的 symbol 注册,且类似于内建对象类,但作为构造函数来说它并不完整,因为它不支持语法:new Symbol()