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。