总结
- 基本数据类型(8种):Number、String、Boolean、Null、Undefined、Symbol、BigInt
- 引用数据类型:Object
function函数、array数组、date日期等都属于Object大类
数据类型详解
1. 数值:Number
let a = 1.26
let b = 123e4
let c = 1.7976931348623157e+310
let d = 5e-325
console.log(`
普通数值类型:${a}
科学计数法:${b}
超最大范围:${c}
超最小范围:${d}
数值类型范围最大值:${Number.MAX_VALUE}
数值类型范围最小值:${Number.MIN_VALUE}
`)
NaN是Number类型
NaN与任何数都不相等
NaN和任何数字运算结果都是NaN
let m = NaN
let n = 2
let res1 = (m === m)
let res2 = (m + n)
console.log(`
NaN是否与本身相等:${res1}
NaN参与计算:${res2}
`)
2. 字符串:String
let a = '你好' // 单引号字符串
let b = "smc"; // 双引号字符串
/* let c = ''单引号嵌套'' // 单引号嵌套出错
let d = ""双引号嵌套"" // 双引号嵌套出错 */
let str1 = '\'单引号嵌套\'' // 单引号嵌套要转义 \'
let str2 = "\"双引号嵌套\"" // 双引号嵌套要转义 \"
let e = '"单引号嵌套双引号"'
console.log(`
单引号字符串:${a}
双引号字符串:${b}
字符串拼接:${a+b}
单引号嵌套:${str1}
双引号嵌套:${str2}
单双引号嵌套:${e}
`)
3. 布尔:Boolean
布尔只有两个值
true
false
4. Null和Undefined
let a = null
let b = undefined
console.log(`
Null的类型:${typeof a}
Undefined的类型:${typeof b}
`)
5. Symbol
Symbol会生成一个全局唯一的值
let role = {
super:'super',
admin:'admin',
user:'user'
}
// 设置权限角色,值是什么不重要,只要role.super、role.admin、role.user互相之间不一样就好
// 引入Symbol目的在此,Symbol会生成一个全局唯一的值
let role1 = {
super:Symbol(),
admin:Symbol(),
user:Symbol(),
}
let a = (role1.super !== role1.admin)
console.log(a)
// Symbol括号里的值可以看成区分的注释
let role2 = {
super:Symbol('super'),
admin:Symbol('admin'),
user:Symbol('user'),
}
let b = (role2.super === role2.admin)
console.log(b)
6. BigInt
7. 对象:Object
let obj = {
"name":'smc_li',
"age":18
}
// 读取属性
let a = obj.name
let b = obj['name']
console.log(a)
console.log(b)