二 JavaScript 数据类型

本文详细介绍了JavaScript中的基本数据类型(包括Number、BigInt、String、Boolean、Null、Undefined和Symbol),展示了类型检查和转换的方法,如toString、parseInt、parseFloat,以及特殊值如Infinity和NaN的处理。
摘要由CSDN通过智能技术生成

二 数据类型

JavaScript目前总共有7+1基本数据类型…吧(2024.1.28)毕竟JavaScript还在发展;

注意JavaScript是弱类型语言

使用typeof关键字进行类型检查

console.log(typeof 99); // "number"
console.log(typeof 99n); // "bigint"
console.log(typeof "字符串"); // "string"

2.1 数值(Number)

在JS中所有的整数和浮点树都是Number类型

JS中的数值并不是无限大的,在超过一定范围后会显示近似值或科学计数法

Infinity是一个特殊的数值表示无穷

在JS中进行一些精度比较高的运算时要十分注意(ps:经典面试题之0.1+0.2 != 0.3)

NaN(Not a Number)也是一个特殊的数值,表示非法的数值;是个狠人,用起来他自己都不认识他自己(NaN == NaN =>false)

let a = 10
a = 10.5 // 10.5
a = 999999999999999999999999999999999 // 1e+33
a = 99999 ** 99999 // Infinity
a = Infinity // Infinity
a = 1.11111111111111111111111111111111111111111111 // 1.1111111111111112
a = 0.0000000000000000000000000000000000001 //1e-37
a = 0.1 + 0.2 // 0.30000000000000004
a = 1 - 'a' // NaN
console.log(a);
表达式打印值备注
10.510.5没什么好说的
9999999999999999999999999999999991e+33直接整成科学计数了
99999 ** 99999InfinityInfinity表示无穷大
InfinityInfinity同上
1.111111111111111111111111111111111111111111111.1111111111111112近似值
0.00000000000000000000000000000000000011e-37科学计数法
0.1 + 0.20.30000000000000004和二进制、精度、底层实现有关其他语言也有类似问题
1 - ‘a’NaNNot a Number
5-‘3’2隐式类型转换

2.1.1 大整数(BigInt)

大整数用来表示一些比较大的数

大整数使用n来结尾,它可以表示的数字范围是无限大

表达式打印值备注
999999999999999999999999999999999n999999999999999999999999999999999n
9999999999999999999999999999999991e+33

2.1.2 进制表示

  • 二进制:0b

  • 八进制:0o

  • 十六进制:0x

表达式打印值备注
0b101010二进制转十进制
0o108八进制转十进制
0xff255十六进制转十进制

2.1.3 字符串

在js中使用单引号或者双引号来表示字符串

let str = "Hello world"
let str2 = 'Hello world!'

转义字符:\

转义字符的使用:

表达式打印结果备注
\""
\’
\\\
\t制表符
\n换行

使用 键盘上左上角那个ESC下面那个东西设置模板字符串 `

let name = "孙悟空"
let str = `他的名字是${name},他有${1+1+1-2}根金箍棒`
console.log(str);  // 他的名字是孙悟空,他有1根金箍棒

2.1.4 布尔值(Boolean)

布尔值主要用来进行逻辑判断

布尔值只有两个值 truefalse

console.log(typeof true); // boolean

2.1.5 空值(null)

空值用来表示“空”对象,而不是“空对象”({}这是“空对象”)

使用typeof null会返回object即使用typeof无法检查空值

let a = null
console.log(typeof a); // object

2.1.6 未定义(undefined)

当声明一个变量而没有赋值是,他的值就是undefined

let a
console.log(typeof a); // undefined
a = undefined
console.log(undefined); // undefined

可以说,null是给用户使用的而undefined是留给JavaScript用的…吧

2.1.7 Symbol

用来创建一个唯一的标识

使用typeof检查符号时会返回symbol

let a = Symbol()
console.log(typeof a); // symbol

ES6出来的,我现在还不会用

2.1.8 总结

JS中原始值一共有七种

NumberBigIntStringBooleanNullUndefinedSymbol

+1 种object类型

原始值在JS中是不可变类型,一旦创建就不能修改,只能等垃圾回收;

2.2 类型转换

类型转换指的是将一种数据类型转换为其他类型,如:1 -> “1”, “13” -> 13

2.2.1 字符串

1. toString()
  1. 调用toString()方法将其他类型转换为字符串

null 和 undefined 中没有toString()方法,所以调用时会报错

console.log(null.toString()); 
//Cannot read properties of null (reading 'toString')
let a = 100
console.log("number转换成字符串",a.toString(),typeof a.toString());
a = 999n
console.log("BigInt转换成字符串",a.toString(),typeof a.toString());
a = true
console.log("Boolean转换成字符串",a.toString(),typeof a.toString());
a = Symbol()
console.log("Symbol转换成字符串",a.toString(),typeof a.toString());

// 执行结果:
// number转换成字符串 “100” string
// BigInt转换成字符串 “999” string
// Boolean转换成字符串 “true” string
// Symbol转换成字符串 “Symbol()” string

100.000 转换成字符串会变成"100"

100.23 转换成字符串还是”100.23“

2. String()

调用String()函数将其他类型转换为字符串

原理:

对于拥有toString() 方法的值调用String()函数时,实际上就是在调用toString()方法

对于null和undefined这两个没有toString()方法的类型,则直接转换成“null”和“undefined”

更加灵活

a = null
console.log("Symbol转换成字符串",String(a),typeof String(a));
a = undefined
console.log("Symbol转换成字符串",String(a),typeof String(a));
// 执行结果
// Symbol转换成字符串 “null” string
// Symbol转换成字符串 “undefined” string

2.2.2 数值

将其他数据类型转换为数值

2.2.2.1 Number() 函数

使用Number()函数来将其他类型转换为数值


字符串转换规则如下:

  1. 如果字符串是一个合法的数字,则会自动转换为对应的数字
a = "100"
console.log(Number(a),typeof Number(a)); // 100 number
  1. 如果字符串不是合法数字,则转换为NaN
a = "100n"
console.log(Number(a),typeof Number(a)); // NaN number
  1. 如果字符串是空串纯空格的字符串,则转换成0
a = ""
console.log(Number(a),typeof Number(a)); // 0 number
a = "        "
console.log(Number(a),typeof Number(a)); // 0 number

布尔值转换规则如下:

  1. true转换成1,
let a = true
console.log(Number(a),typeof Number(a)); // 1 number
  1. false转换成0
a = false
console.log(Number(a),typeof Number(a)); // 0 number

null 转换成0

a = null
console.log(Number(a),typeof Number(a)); // 0 number

undefined 转换成 NaN

a = undefined
console.log(Number(a),typeof Number(a)); // NaN number

2.2.2.2 parseInt()

将一个字符串转换为一个整数

这个有意思了,他解析的时候从左往右进行,直到碰到第一个不合法的数字(包括空格、字母、刀乐符、小数点… …)停止解析,返回解析结果。如果你的字符串开头第一个字符就不是数字,则直接返回NaN

比如123a456

let a = "123 456" // 空格
console.log(parseInt(a)); // 123
a = "a13"
console.log(parseInt(a)); // NaN
a = "123a456" // 字母
console.log(parseInt(a)); // 123
a = "123&456" // 刀乐符
console.log(parseInt(a)); // 123
a = "123.456" // 小数点
console.log(parseInt(a)); // 123

因为小数点也不会被视为数字,所以可以用来进行取整。

nullundefinedNaN都会被解析成NaN

2.2.2.3 parseFloat()

因为parseInt()遇到小数点后停止解析,则其无法完整转换小数,parseFloat()遇到小数点继续解析

123.456.789 会解析成 123.456 ,第二个小数点不算

nullundefinedNaN都会被解析成NaN

let a = "123.456"
console.log(parseFloat(a),typeof parseFloat(a)); // 123.456 number
a = "123.456.789"
console.log(parseFloat(a),typeof parseFloat(a)); // 123.456 number

2.2.3 布尔值

将其他类型转换成布尔值

数字类型转换情况0NaN转换成false,其他是true;

字符串类型转换情况:空串是false,其余是true;

null 和 undefined都转换false

对象类型会转换为true

总结:

null、undefined、NaN、0、空串都是false,其他是true

console.log(Number(undefined)); // false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值