JS语法_类型
类型
JS 的数据类型
- boolean
- number
- string
- undefined
- null
- symbol
- object
BigInt 是一种内置对象,它提供了一种方法来表示大于 \(2^{53 - 1}\) 的整数。这原本是 Javascript 中可以用 Number 表示的最大数字。BigInt 可以表示任意大的整数。
typeof
// log
console.log(typeof [1, 2])
// log
console.log(typeof new Number(1))
console.log(typeof 1)
隐式类型转化
// log
console.log(!{}[true])
console.log(+[1, 2])
console.log([] == 0)
console.log([] == false)
console.log([] == ![])
console.log([] + {})
console.log({} + [])
{} + [] == 0 ? console.log('0') : console.log('not 0')
!{}[true
考察[]的优先级高于!,若记错优先级,答案就不一样了- 单目运算符
+
,会转化为数字。在正式转化前,object要先进行toPrimitive
。[1,2]是object类型,转为1,2
这个字符串,这个字符串无法靠+
转化为number类型,靠+不如parseInt
强大 [] == 0
和[] == false
考察的知识点仍然是 object 转 primitive,这里[]
被转化为空串[] == ![]
考察!object类型 === true
- 最后三个,考察如下知识点
- object类型进行运算时,要先转化为原始值
{}
会被转化为[object Object]
,而[]
会被转为空串- 如果
{}
产生了歧义,那么优先考虑其是空代码块
而不是空对象
类型转换
// log
function testTruthy(val) {
return val ? console.log(true) : console.log(false)
}
testTruthy('')
testTruthy(new String(''))
testTruthy(new Number(NaN))
testTruthy(NaN)