js类型 原始类型 引用类型 typeof
- typeof 返回值 6种
number string boolean undefined object(数组也是对象) function
- js5/6中基本数据类型(原始类型):
number string boolean undefined null (symbol)
- js2种引用类型:
object function
-特殊数据类型 :undefined null
- 关于NAN:NAN
typeof NAN => Number
NAN = NAN // NAN
NAN运算结果NAN ,NAN转布尔false
NAN == NAN //false
NAN === NAN //false
原理:
- NaN ,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)
-
任何与NaN进行运算的结果均会为NaN
,NaN与自身不相等(NaN不与任何值相等)
isNAN() //output Boolean
undefined null
null
- typeof null //output object
解释:这只是 JS 存在的一个悠久 Bug,
——— JS 的最初版本中使用的是 32 位系统,为了性能考虑使用低位存储变量的类型信息, 000 开头代表是对象,然而 null 表示为全零,所以将它错误的判断为 object 。
———现在的内部类型判断代码已经改变了,但是对于这个 Bug 却是一直流传下来 -
null == undefined
//output true
undefined
-
typeof undefined
// output undefined -
null == undefined
//output true - undefined 全局变量 声明未赋值的 函数无返回值的 均返回undefined 类型
关系
- 提示: Null undefined 没有.tostring 方法 强制会报错
- 关系link
尽管null和undefined有这样的关系,但它们的用途完全不同,如前所述,>无论什么情况下都没有必要把一个变量的值显式地设置为undefined,可视同样的规则对null却不适用。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。这样做不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。