重学JavaScript[1] 类型
王昭君 1/17/2021 JavaScript类型
# 8 种类型
JavaScript 种有 8 种基本的数据类型:
number
任何类型的数字,包括整数和浮点数,范围±(253-1)
内bigint
任意长度的整数string
字符串null
显而易见,nullundefined
未定义的值symbol
用于唯一标识符object
对象和更复杂的数据结构
# number
number 包括整数、浮点数,可以进行加减乘除等运算
let a = 10
let b = 1.5
console.log(a + b)
// 11.5
除了基本的数,还有Infinity
和NaN
这类特殊数值,可以直接书写它们的字面量
let a = NaN
let b = Infinity
但请注意 js 饱受诟病的精度问题!
console.log(0.1 + 0.2 === 0.3)
// false
# bigint
顾名思义,表示较大的数
let a = 1234567890123456789012345678901234567890n
console.log(typeof a)
// bigint
# string
js 支持单引号和双引号,同时还有``包裹的模板字符串
let name = '王昭君'
console.log(`I am ${name}.`)
// I am 王昭君.
# boolean
布尔类型,这个应该不用多说
# null
null
值只属于 null 类型,null 类型只包含null
值
# undefined
和 null 类似,undefined 类型只包含undefined
值,表示变量已被声明但未被赋值
let a
console.log(a)
// undefined
# object
相比上述的数据类型,object 用于储存数据集合或更复杂的实体
object 可以被理解为”对象“:
let o = { a: 'b', c: 'd' }
console.log(typeof o)
// object
但请注意,js 里的数组并不是一个单独的类型!
let l = []
console.log(typeof l)
// object
# symbol
symbol 是 ES6 引入的数据类型,表示全局唯一的值
let s = Symbol('key')
console.log(typeof s)
// symbol
# typeof 运算符
在上面的例子里,我们大量使用了typeof
运算符来得出数据的类型
你可以使用typeof x
或typeof(x)
两种语法,来得到一个表示类型的字符串
但你时常要注意一些特殊情况,比如:
console.log(typeof null)
// object
这是 js 官方承认的一个设计错误,因为null
值只属于 null 类型,而不是 object
还有:
function f() {}
console.log(typeof f)
// function
在 js 里并没有特殊的“函数”类型,任何函数都属于 object,然而这也是 js 语言本身的设计问题,但如果你要判断一个变量是否为函数时,这是一个非常有用的特性