JavaScript 有 七种 内置类型(现在搜到的大多数还是六种的说法)
- 空值(null)
- 未定义(undefined)
- 布尔值(bollean)
- 数字(number)
- 字符串(string)
- 对象(object)
- 符号(symbol)ES6中新增
使用 typeof
查看值得类型,除null
返回值是Object
外,其他返回的都是类型的字符串值。
当我们判断一个值是不是null
的时候,需要复合条件来判断
let a = null;
(!a && typeof a === 'Object') // true
JS中的数组通过判断可以看到,数组也是对象
还有一种情况,当我们尝试使用typeof
判断个函数
的值时候,返回的是function
但是function
并不是内置类型,只是object
类型的一个子类型。函数
不仅是对象,还可以拥有属性。
值和类型
JavaScript 中的变量没有类型,只有值才有。变量可以随时持有任何类型的值。换个角度来理解就是,JavaScript不做“类型转换”;也就是说。语言引擎不要求变量持有与初始值同类型的值。
在对变量执行 typeof
操作时,得到的结果并不是该变量的类型,而是该变量持有的值得类型,因为JavaSc中变量没有类型。
在JavaScript中undefined
和undeclared
并不是一回事,undefined
是值的一种,undeclared
表示变量还没有被声明
注意:
当我们试图访问undeclared
变量时报错ReferenceError: a is not defined
,并且typeof
对undefined
和undeclared
变量都返回undefined
参考:
《你不知道的JavaScript》中卷