JS基础知识系列之数据类型(一天一篇,防止呆滞)

145 阅读1分钟

NNUSB = 奶奶USB

为何如此说道?奶奶的USB是什么东西鬼?请记住奶奶的usb。因为Null,Number, Undefined, String, Boolean.首字母连起来就是NNUSB。奶奶再也不用担心我的学习!然后还有一个Object复杂类型。(Symbol不做讨论)

对象是最复杂的数据类型,大致分为三个小类:

  • 狭义的对象
  • 数组
  • 函数

JS中有三种方式可以确定一个变量的类型

  • typeof
  • instanceof
  • Object.prototype.toString

各自的方法得出的结论又不同,很容易弄混,非常操蛋(反正大半年过去了,我还是没彻底记住区别)。

typeof 检验string,number,boolean的基础类型的时候都是很直接的得出应该有的答案。 在检验object和特殊值的时候需要记住他的结论。

function f() {}
typeof f
// "function"

typeof undefined
// "undefined"

typeof window // "object"
typeof {} // "object"
typeof [] // "object"

typeof null // "object"

由上述结果可以得出null是特殊的,会返回object。

Null 和 undefined

这两者之间的含义非常的相似,都是表示为“无”。在if语句中都会被转变为false。可以说需要他们转换为boolean的时候都会变成false。所以在 “==”比较的时候,因为会发生类型转换,他们都表现为false,两者因此会相等。

if (!undefined) {
  console.log('undefined is false');
}
// undefined is false

if (!null) { // 不要试图用typeof检验null,因为返回的是object,这将使得null表现产生变化。直接使用null判断即可。
  console.log('null is false');
}
// null is false

undefined == null // true

//null在转化为数值的时候为0
Number(null) // 0
5 + null // 5

// undefined又变现不一样了
Number(undefined) // NaN
5 + undefined // NaN

布尔值的转换

  • undefined
  • null
  • false
  • 0
  • NaN
  • ""或''(空字符串)

以上转变为false,除此之外都为true。