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)
posted @ 2020-08-28 00:40  oceans-pro  阅读(174)  评论(0编辑  收藏  举报