这几天再看“JavaScript高级程序设计”,打算巩固下基础,顺便对一些常用的进行总结,之后的更新可能都是基础知识。有兴趣的可以关注下公众号
今天说说JavaScript的数据类型,很多人会认为有六种数据类型,其实不是很全面,我们就盘盘JavaScript到底有几种数据类型,我们分原始类型和引用类型说。
1 typeof 操作符
在说数据类型之前,我们需要知道如何去判断一个变量属于什么数据类型,typeof操作符就是为此而生的。对一个值使用 typeof 操作符会返回下列字符串之一:
代码语言:javascript复制"undefined" 表示值未定义;
"boolean" 表示值为布尔值;
"string" 表示值为字符串;
"number" 表示值为数值;
"object" 表示值为对象;
"function" 表示值为函数;
"symbol" 表示值为符号;
"bigint" 表示值最大安全整数;
2 原始数据类型
在ES6之前,有五种原始数据类型,number、string、boolean、null、undefined,在ES6新增一种symbol,ES10新增一种bigint。算下来,原始数据类型就有7种。
2.1 number
代码语言:javascript复制let a = 1
let b = 1.1
let c = -1.1
typeof a // "number"
typeof b // "number"
typeof c // "number"
我们通过操作符typeof可以看出上面几个变量都是原始数据类型中的数字类型,这里我们说下特殊的数值NaN,意思是“不是数值”(Not a Number),用于表示本来要返回数值的操作失败了(而不是抛出错误)。
代码语言:javascript复制console.log(0/0); // NaN
console.log(-0/ 0); // NaN
我们还可以通过Number()、parseInt()和 parseFloat()将非数值转换为数值。
2.2 string
代码语言:javascript复制let firstName = "lilei";
let lastName = 'lixiaolei';
这里就不多说了,单引号和双引号都是可以定义字符串的。
2.3 boolean
Boolean(布尔值)类型是 ECMAScript 中使用最频繁的类型之一,有两个字面值:true 和 false。
代码语言:javascript复制let a = false;
let b = true;
2.4 null
Null 类型只有一个值,即特殊值 null。逻辑上讲,null 值表示一个空对象指针,这也是给typeof 传一个 null 会返回"object"的原因:
代码语言:javascript复制let car = null;
console.log(typeof car); // "object"
2.5 undefined
Undefined 类型也只有一个值,就是特殊值 undefined。当使用 var 或 let 声明了变量但没有初始化时,就相当于给变量赋予了 undefined 值:
代码语言:javascript复制let message;
console.log(message == undefined); // true
2.6 symbol(ES6)
Symbol(符号)是 ECMAScript 6 新增的数据类型。用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。
代码语言:javascript复制let sym = Symbol();
console.log(typeof sym); // symbol
2.7 bigint(ES10)
BigInt数据类型的目的是比Number数据类型支持的范围更大的整数值。在对大整数执行数学运算时,以任意精度表示整数的能力尤为重要。使用BigInt,整数溢出将不再是问题。
代码语言:javascript复制let max = Number.MAX_SAFE_INTEGER; // 最大安全整数
let max1 = max 1
let max2 = max 2
max1 === max2 //true
由于JavaScript按照IEEE 754-2008标准的定义,所有数字都以双精度64位浮点格式表示。在此标准下,无法精确表示的非常大的整数将自动四舍五入。确切地说,JS 中的Number类型只能安全地表示-9007199254740991 (-(2^53-1)) 和9007199254740991(2^53-1)之间的整数,任何超出此范围的整数值都可能失去精度。使用BigInt,应用程序不再需要变通方法或库来安全地表示Number.MAX_SAFE_INTEGER和Number.Min_SAFE_INTEGER之外的整数。现在可以在标准JS中执行对大整数的算术运算,而不会有精度损失的风险。
代码语言:javascript复制let max = BigInt(Number.MAX_SAFE_INTEGER);
let max1 = max 1n
let max2 = max 2n
max1 === max2 // false
3 引用数据类型
引用数据类型(object类型),其实就是一组数据和功能的集合,通过 new 操作符后跟对象类型的名称来创建。我们常用的object、array、function、data等都属于引用类型。
代码语言:javascript复制let a = new Function()
let b = new Date()
let c = new Object()
let d = new Array()
关于引用类型的属性和方法,我们后期再讲。
4 总结
JavaScript的数据类型一共有8种,基本数据类型有7种,number、string、boolean、null、undefined,symbol(ES6),bigint(ES10),引用类型有1种object,我们常用的object、array、function、data等都属于引用类型。