JavaScript中的数据类型

本文详细介绍了JavaScript中的数据类型,包括值类型(undefined、null、boolean、number、string、symbol)和引用类型(Object、Function、Array、RegExp、Date)。探讨了数值类型的浮点数、精度、范围,以及字符串的特点和转换方法。还涉及正则表达式、Date对象的使用,以及基础类型和引用类型在存储上的区别。
摘要由CSDN通过智能技术生成

概要

ECMAScript 的类型一共分为两大类,值类型以及引用类型。

值类型又称基础类型,具体如下:

undefined 未定义
null
boolean 布尔
number 数值
string 字符串
symbol 标记

引用类型又称复杂类型Object(对象),具体如下:

Object 对象
Function 函数
Array 数组
RegExp 正则
Date 日期

基础类型

1、undefined(未定义)

undefined 类型只有一个值,在使用 var 声明变量时没初始化,此时变量值就为 undefined,在给变量初始化为 undefined 后,亦可于 undefined 等价,同时未定义的变量默认值也是undefind。

// 已定义,未初始化
var a
a // undefined

// 已定义变量,初始化为undefind
var b = undefined
b == undefined // true

// 未定义变量
c // undefined

2、null(空)

null 值表示一个空对象指针,因此在用 typeof 操作符检测 null 时会返回 "object"。

此外值得注意的一点,null 与 undefined 相互比较时返回为 true,尽管它们之间有这种关系,但它们的用途并不相同,故在多数情况下,需要对变量初始化时,用 null 代替 undefined 即可。

let a
let b = null
a == b // true

3、boolean(布尔)

boolean 类型只有两个值,分别是 true 和 false,且区分大小写,此外其它基础类型的值,在进行条件判断时会进行隐式转换,具体规则如下:

数值类型 true false
Boolean         true false
String 任意非空字符 ""
Number 任何非零数值(包括无穷大) 0,NaN
Object 任意对象 null

4、number(数值)

该类型可细分为整形和浮点型,同时也能表示十进制,八进制,十六进制。

八进制以0开头,且后方字符范围是 0~7;

十六进制以0x开头,且后方字符范围是(0~9及A~F),字符的大小写不受限制;

在进行算数运算时,八进制和十六进制都会转化为十进制数值

let a = 55  // 十进制
let b = 050 // 八进制
let c = 0xa // 十六进制
4.1、浮点数

所谓浮点数,就是该数字含有一个小数点,小数点后面必须有一个数字,且占用内存空间是整数的两倍,若小数点后面的值为0,则JS会将其默认转化为整型来存储。

4.2、e表示法

e为科学计数法,主要用于表示那些极大值和极小值,用e表示法的数值等于e前面的数乘以10的指数次幂,如下代码。

var a = 3.125e7 // 31250000

以上例子实际含义为:3.125 *10^{7} 。

如若要表示最小数,例如0.0000003,则被转化为3e^{-7}来进行表示。

4.3、精度

在 64 位的二进制中,符号位决定了一个数的正负,指数部分决定了数值的大小,小数部分决定了数值的精度。

IEEE754 规定,有效数字第一位默认总是1 。因此,在表示精度的位数前面,还存在一个 “隐藏位” ,固定为 1 ,但它不保存在 64 位浮点数之中。也就是说,有效数字总是 1.xx…xx 的形式,其中 xx…xx 的部分保存在 64 位浮点数之中,最长为52位 。所以,JavaScript 提供的有效数字最长为 53 个二进制位,其内部实际的表现形式为:

(-1)^符号位 * 1.xx…xx * 2^指数位

这意味着,JavaScript 能表示并进行精确算术运算的整数范围为:[-253-1,253-1],即从最小值 -9007199254740991 到最大值 9007199254740991 之间的范围 。

可以通过 Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER 来分别获取这个最大值和最小值。

对于超过这个范围的整数,JavaScript 依旧可以进行运算,但却不保证运算结果的精度。

浮点值的精度最高位数为17位小数,故在计算中精度远不及整数。而且在某些特定值运算时会出现精度丢失,例如:0.1+0.2=0.3000000000000004。

因此在计算浮点数时,尽可能控制小数位数,以确保值的准确性。

4.4
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值