JS中原始值一共有七种
Number 、BigInt、String、Boolean、Null、Undefined、Symbol
七种原始值是构成各种数据的基石
原始值在JS中是不可变的类型,一旦创建就不能修改
1. 数值(Number)
在JS中所有的整数和浮点数都是Number类型:
js中的数值并不是无限大的,当数值超过一定范围后会显示近似值
infinity是一个特殊的数值表示无穷
所以在JS中进行一些精度比较高的运算时要十分注意
还有一个特殊值叫NaN也属于Number类型,即Not a Number
以下都是Number类型:
let a = 10
// 声明变量之后不可变,给a赋值即可
a = 10.5
a = 3.14
a = 9999999999999999911111111111111111111
a = 99999*99999
a = Infinity //类型检查返回number
a = 1.11111111111111111111111111111111111111
a = 0.0000000000000000000000000000000001
a = 0.1 + 0.2
a = 1 - "a" //返回NaN
a = NaN //返回NaN
console.log(a)
大整数(BigInt)
大整数用来表示一些比较大的整数
其他进制的数字:
二进制 0b
八进制 0o
十六进制 0x
let a = 0b1010 //返回:10 ,虽然输入的是二进制,但是输出的时候都会以十进制的形式去显示
a = 0o10 // 返回:8
a = 0xff //返回:255 (ff为十六进制)
console.log(a)
console.log(typeof a)
3. 类型检查
typeof 运算符
typeof用来检查不同的值的类型
它会根据不同的值返回不同的结果
let a = 10 // BigInt
let b = 10n
// console.log(a)
// console.log(b)
console.log(typeof a) //控制台返回:number
console.log(typeof b) //控制台返回:bigint
字符串(String)
字符串(String)
在JS中使用单引号或双引号来表示字符串
转义字符
\" --> "
\' --> '
\\ --> \\
\t --> 制表符
\n --> 换行
模板字符串:使用反单引号`来表示模板字符串,模板字符串中可以嵌入变量
使用typeof检查一个字符串时会返回 "string"
<script>
let a = 'hello'
a = "你好"
a = "这是一个\"字\\\\符串"
a = "呵呵\t哈哈哈"
a = "javascript学历记录\n字符串\n数值"
// 模板字符串
a = "我真漂亮"
a = `我真漂亮`
console.log(a)
console.log(typeof a)
let name = "猪八戒"
let str = `你好,${name}`
console.log(str)
console.log(typeof name)
</script>
//建议读者自行试运行以上代码
5. 布尔值(boolean)
布尔值(boolean):布尔值主要用来进行逻辑判断,布尔值只有两个true和false
使用type检查一个布尔值时会返回boolean
let bool = true
bool = false
console.log(bool)
console.log(typeof bool) //控制台输出:boolean
6. 空值(null)
空值(null):空值用来表示空对象,空值只有一个null
使用typeof无法检查空值,使用typeof检查一个空值时会返回"object"
let a = null
console.log(a)
console.log(typeof a)
7. 未定义(Undefined)
未定义(Undefined):当声明一个变量而没有赋值时,它的值就是undefined。
Undefined类型的值只有一个就是undefined
使用type检查一个Undefined类型的值时,就会返回"Undefined"
let b = undefined
console.log(typeof b) //控制台输出:undefined
8. 符号(Symbol)
符号(Symbol):用来创建一个唯一的标识
使用typeof检查符号时返回"symbol"
let c = Symbol() //调用Symbol()创建了一个符号
console.log(c)
console.log(typeof c)
9.类型转换
类型转换值将一种数据类型转换为其他类型或将其他类型转换为(字符串、数值和布尔值)
1.将其他类型转换为字符串:
(1)调用toString()方法将其他类型转换为字符串
由于null和undefiend中没有toString()
所以对这两个东西调用toString()时会报错
let a = 10 //转换成字符串为"10"
a = true // 转换成字符串为"true"
console.log(typeof a, a) // 返回:number 10
a = a.toString()
console.log(typeof a, a) //返回:String 10
(2)调用String()函数将其他类型转换为字符串
let b = 33
String(b)
b = String(b)
console.log(typeof b, b) //string33
2.将其他的数据类型转换为数值:
(1)使用Number()函数来将其他类型转换为数值
字符串:
如果字符串是一个合法的数字,则会自定转换为对应的数字
如果字符串不是合法数字,则转换为NaN
如果字符串是空串或纯空格的字符串,则转换为0
布尔值:
true转换为1,false转换为0
null 转换为0
undefined 转换为 NaN
let a = '123'
a = 'abc' // number NaN
a = '3.14654323' // number 3.14654323
a = '11px' //不合法数字---> number NaN
a = '' // 空串 ---> number 0
a = ' ' // number 0
// 布尔值
a = true // 1
a = false // 0
a = null //0
a = undefined // NaN
// console.log(typeof a, a)
a = Number(a)
// console.log(typeof a, a)
专门用来将字符串转换为数值的两个方法
parseInt() ———— 将一个字符串转换为一个整数
解析时,会自左向右读取一个字符串,直到读取到字符串中所有的有效的整数
也可以使用parseInt()来对一个数字进行取整
parseFloat() ———— 将一个字符串转换为浮点数
解析时,会自左向右读取一个字符串,直到读取到字符串中所有的有效的小数
let b = '123' // String 123
b = '124px' // 用Number()函数转的话转不了,但是可以用parseInt()函数转
b = 'a256' //返回 NaN,因为自左向右第一个字符串不是有效的整数,所以转不了
b = 765 // 返回number 765,parseInt虽然是专门用来转字符串的,但是也可以把数字先转换成字符串再转换称数字
b = 768.1234 //返回 number 768 ,parseInt可以用来取整
console.log(typeof b,b)
b = parseInt(b) // number 123
console.log(typeof b,b)
3.将其他类型转换为布尔值:
(1)使用Boolean()函数来将其他类型转换为布尔值
数字:
0 和 NaN转换为false, 其余是true
字符串:
空串为false,其余是true
null和undefined都转换为false
对象:对象会转换为true
所有表示空性的没有错误的值都会被转换为false:
0、NaN、空串、null、undeined、false
let a = 1 //true
a = 100 //true
a = -1 // true
a = 0 //false
a = NaN // false
a = Infinity //true
// 字符串
a = 'abc' //true
a = 'true' //true
a = 'false' //true
a = '' // 空串, false
a = " " //true
a = null // false
a = undefined // false
console.log(typeof a,a)
//使用Boolean函数
a = Boolean(a)
console.log(typeof a, a)