4.1、数值类型
(1)、数值(Number)
- 在 js 中所有的整数和浮点数都是 Number 类型
- js 中的数值并不是无限大的,当数值超过一定范围后会显示近似值
- Infinity 是一个特殊的数值表示无穷
- NaN 也是一个特殊的数值,表示非法的数字
<script>
var a = 10;
a = 3.14;
a = Infinity;// 无穷大
a = 1 - "a" // NaN (Not a Number)
consloe.log(a);
</script>
(2)、大整数(BigInt)
- 大整数用来表示一些比较大的整数
- 大整数使用 n 结尾,它可以表示的数字范围是无限大
<script>
var a = 999999999999999999999999999999999999n
</script>
(3)、其他进制的数字:
- 二进制 0b
- 八进制 0o
- 十六进制 0x
<script>
var a = 0b1010
a = 0o10
a = 0xff
console.log(a)
</script>
4.2、类型检查
(1)、typeof 运算符
- typeof 用来检查不同的值的类型
- 它会根据不同的值返回不同的结果
<script>
var a = 10
var b = 10n
console.log(typeof a)// Number
console.log(typeof b)// Bigint
</script>
4.3、字符串类型
(1)、在 js 在中使用单引号或双引号来表示字符串
- 转义字符 \
\ " --> "
\ ' --> '
\\ --> \\
\t --> 制表符
\n --> 换行
- 模板字符串
- 使用反单引号 ` 来表示模板字符串
- 模板字符串中可以嵌入变量
- 使用 typeof 检查一个字符串是会返回 String
<script>
var a = 'Hello'
a = "你好"
a = "这是一个\"字\\\\符串"
a = "呵呵\t哈哈哈"
a = "呵呵\n哈哈哈"
a = `今天天气真不
错`
var name = "孙悟空"
var str = `你好, ${name}`
console.log(str)// 你好, 孙悟空
var b = 10
console.log(`b = ${b}`)// b = 10
var c = 'Hello'
console.log(typeof c)// String
</script>
4.4、布尔值(Boolean)
- 布尔值主要用来进行逻辑判断
- 布尔值只有两个 true 和 false
- 使用 typeof 检查一个布尔值时会返回 boolean
<script>
var bool = true
bool = false
var num = 1
console.log(typeof bool)// boolean
</script>
4.5、空值(Null)
- 空值用来表示空对象
- 空值只有一个 null
- 使用 typeof 检查一个空值时会返回 object
- 使用 typeof 无法检查空值
<script>
var a = null
console.log(typeof a)// object
</script>
4.6、未定义(Undefined)
- 当声明一个变量而没有赋值时,它的值就是 Undefined
- Undefined 类型的值只有一个就是 Undefined
- 使用 typeof 检查一个 Undefined 类型的值时,会返回 "undefined"
<script>
var a = undefined
console.log(typeof a)// undefined
</script>
4.7、符号(symbol)
- 用来创建一个唯一的标识
- 使用 typeof 检查符号时会返回 "symbol"
<script>
var a = symbol()
console.log(typeof a)// symbol
</script>
4.8、类型转换
- 类型转换值将一种数据类型转换为其他类型
- 其他类型转换为(字符串、数值和布尔值)
(1)、转换为字符串
- 1.使用 toString() 方法将其他类型转换为字符串
- 调用 xxx 的 yyy 方法 --> xxx.yyy()
- 由于使用 null 和 undefined 中没有 toString()
- 所以对这两个东西调用 toString() 会报错
<script>
var a = 10
a = true
a = 11n
a = undefined
console.log(typeof a, a)
a = a.toString() // "10"
console.log(typeof a, a)
</script>
- 2.调用 string() 函数将其他类型转换为字符串
- 调用 xxx 函数 ---> xxx()
- 原理:
- 对于拥有 toString() 方法的值调用 String() 函数时,实际上就是在调用 toString() 方法
- 对于 null ,则直接转换为 “null”
- 对于 undefined ,直接转换为 “undefined”
<svript>
var b = 33
b = null
b = undefined
b = true
console.log(typeof b, b)
b = String(b)
console.log(typeod b, b)
</script>
(2)、转换为数值
将其他的数据类型转换为数值
- 1.使用 Number() 函数来将其他类型转换为数值
转换的情况:
- 字符串:
- 如果字符串是一个合法的数字,则会自动转换为对应的数字
- 如果字符串不是一个合法数字,则转换为NaN
- 如果字符串是空字符串或纯空格的字符串,则转换为0
- 布尔值:
- true 转换为 1 ,false 转换为 0
- null 转换为 0
- nudefined 转换为 NaN
<script>
var a = '123'// 123
a = 'abc' // NaN
a = '3.1415926' // 3.1415926
a = '11px' // NaN
a = '0' // 0
a = ' ' // 0
a = true // 1
a = fales // 0
console.log(typeof a, a)
a = Number()
console.log(typeof a, a)
</script>
- 2.专门用来将字符串转换为数值的两个方法
parseInt() —— 将一个字符串转换为一个数值
- 解析时,会自左向右读取一个字符串,直到读取到字符串中所有的有效的整数
- 也可以使用 parseInt() 来对一个数字进行取整
parseFloat() —— 将一个字符串转换为浮点数
- 解析时,会自左向右读取一个字符串,直到读取到字符串中所有的有效的小数
<script>
var b = '123px'
console.log(typeof b, b)// String 123px
b = parseInt(b)
console.log(typeof b, b)// Number 123
</script>
(3)、转换为布尔值
- 1.使用 Boolean() 函数来将其他类型转换为布尔值
- 转换的情况
- 数字:
- 0 和 NaN 转换为false
- 其余是 true
- 字符串:
- 空字符串转换为 false
- 其余是 true
- null 和 nudefined 都转换为 false
- 对象:对象都会转换为 true
- 所有表示空性的没有的错误的值都会转换为 false
0、NaN、空串、null、undefined、false
<script>
var a = 1 // true
a = -1 // true
a = 0 // false
a = NaN // false
a = Infinity // true
a = 'abc' // true
a = 'true'// true
a = 'falsr'// false
a = '' // false
a = " " // true
a = null // false
a = nudefined // false
console.log(typeof a, a)
a = Boolean(a)
cpnsole.log(typeof a, a)
</script>