2023-07-20 03:28:09
JS中的数据类型主要分为简单类型和复杂类型两大类,其中简单类型包括:undefined、null、number、string、boolean、symbol,复杂类型主要是object。以下是每种数据类型的详细介绍:
number(数字)
存储形式:采用64位浮点数的形式存储。
写法:整数(如1)、小数(如0.1)、科学计数法(如123e4)、八进制(如0123、0o123)、十六进制(如0x3F)、二进制(如0b11)。
特殊值:
正0和负0:都等于0。
无穷大:Infinity(正无穷大)和-Infinity(负无穷大)。
无法表示的数字:NaN(Not-a-Number)。
string(字符串)
存储形式:采用类似UTF-8的形式存储(具体为UCS-2或UTF-16,根据实现可能有所不同),每个字符通常占用两个字节(对于基本多语言平面内的字符)。
写法:可以使用单引号('你好')、双引号("你好")或反引号(```你好```,即模板字符串)来定义。
特殊字符:使用进行转义,如n表示换行,t表示制表符,uFFFF表示对应的Unicode字符等。
属性:字符串是对象(String对象)的原始值表示,具有length属性表示字符串的长度,可以通过下标(从0开始)访问字符串中的字符。
boolean(布尔值)
取值:只有两个值,true(真)和false(假)。
运算:常用逻辑运算符包括!(非)、&&(与)、||(或)等。
symbol(符号)
特点:是ES6新增的一种原始数据类型,表示独一无二的值。通常用于创建对象的唯一属性键。
undefined和null
undefined:如果一个变量声明了但没有赋值,则默认值为undefined。
null:表示一个空值或不存在的值,通常用于手动释放对象的引用。
object(对象)
特点:是JS中最复杂的数据类型,可以包含多个键值对,键是字符串或symbol,值可以是任意数据类型。
常见对象:数组(Array)、函数(Function)、日期(Date)等,虽然它们有各自的特点和用法,但在JS中它们都属于object类型。
运算符用于对变量和值进行各种运算,JS中的运算符主要包括以下几类:
算术运算符
加法:+,用于数字相加或字符串拼接。
减法:-,用于数字相减。
乘法:*,用于数字相乘。
除法:/,用于数字相除。
取余:%,用于计算两个数相除的余数。
递增:++,使变量的值增加1。
递减:--,使变量的值减少1。
赋值运算符
简单赋值:=,将右侧的值赋给左侧的变量。
复合赋值:如+=、-=、*=、/=等,将右侧的值与左侧变量的当前值进行相应运算后,再将结果赋给左侧变量。
比较运算符
等于:==,比较两个值是否相等(会进行类型转换)。
严格等于:===,比较两个值是否严格相等(不进行类型转换)。
不等于:!=,比较两个值是否不相等(会进行类型转换)。
严格不等于:!==,比较两个值是否严格不相等(不进行类型转换)。
大于:>,比较左侧值是否大于右侧值。
大于等于:>=,比较左侧值是否大于等于右侧值。
小于:<,比较左侧值是否小于右侧值。
小于等于:<=,比较左侧值是否小于等于右侧值。
逻辑运算符
逻辑与:&&,当且仅当两个操作数都为真时,结果才为真。
逻辑或:||,当且仅当两个操作数都为假时,结果才为假。
逻辑非:!,将操作数的布尔值取反。
位运算符
位与:&,对两个数的二进制表示进行与运算。
位或:|,对两个数的二进制表示进行或运算。
位异或:^,对两个数的二进制表示进行异或运算。
位非:~,对一个数的二进制表示进行非运算。
左移:<<,将一个数的二进制表示向左移动指定的位数。
右移:>>,将一个数的二进制表示向右移动指定的位数(保留符号位)。
无符号右移:>>>,将一个数的二进制表示向右移动指定的位数(不考虑符号位)。
其他运算符
条件运算符:? :,也称为三元运算符,用于根据条件表达式的结果选择两个值中的一个。
类型运算符:typeof,用于获取一个变量的数据类型。
void运算符:void,用于计算一个表达式但不返回值(通常用于生成一个undefined值)。
逗号运算符:,,用于顺序执行两个表达式并返回最后一个表达式的值。
在JS中,不同类型的值之间可以进行类型转换,以满足不同的运算需求。类型转换主要包括以下几种情况:
数字转字符串
使用String(n)函数或n + ''(字符串拼接)的方式将数字转换为字符串。
字符串转数字
使用Number('字符串')函数、parseInt('字符串')函数(转换为整数)或parseFloat('字符串')函数(转换为浮点数)将字符串转换为数字。
也可以使用'字符串' - 0的方式将字符串转换为数字(但这种方法依赖于字符串的内容,如果字符串无法转换为数字,则结果为NaN)。
任意类型转布尔
使用Boolean(x)函数或!!x的方式将任意类型的值转换为布尔值。在JS中,有五个值被认为是“假值”(falsy values),它们分别是undefined、null、0、NaN和空字符串''。除了这五个值之外的所有值都被认为是“真值”(truthy values)。
任意类型转字符串
使用String(x)函数或x.toString()方法(如果x是对象且定义了toString方法)将任意类型的值转换为字符串。
注意:在进行类型转换时,需要谨慎处理可能出现的异常情况,如使用parseInt或parseFloat转换字符串时,如果字符串中包含无法转换为数字的字符,则转换会提前终止并返回已转换的部分(或NaN)。