类型
类型是值的内部特征,它定义了值的行为,以使其区别于其他值。
JavaScript有七种内置类型:
- 空值(null)
- 未定义(undefined)
- 布尔值(boolean)
- 数字(number)
- 字符串(string)
- 对象(object)
- 符号(symbol,ES6+)
除了对象之外,其他统称为“基本类型”
JavaScript的bug:
typeof null === "object";//true
//正确应该会返回"null"
null是基本类型中唯一一个“假值”类型。typeof对它返回值为“object”。
typeof function a(){
//...
} === "function";//true
function(函数)也是JavaScript的一个内置类型。是object的一个“子类型”。
值和类型
JavaScript中的变量是没有类型的,只有值才有。变量可以随时持有任何类型的值。
对变量执行typeof操作时,得到的结果并不是该变量的类型,而是该变量持有的值的类型,JavaScript中的变量没有类型。
undefined 和 undeclared
变量在未持有值的时候为undefined。
var a;
a;//undefined
b;//ReferenceError: b is not defined
b is not defined并不是我们所理解的undefined,他们是两码事。
但是
var a;
typeof a;//undefined
typeof b;//undefined
//这里的b是一个undeclared变量
由于typeof有一个特殊的安全防范机制,typeof b并没有报错。
小结
-
JavaScript有七种内置类型:null、undefined、boolean、number、string、object、symbol,可用typeof运算符查看。
-
变量没有类型,其持有的值有类型,类型定义了值的行为特征。
-
undeclared表示变量还没有被声明过,undefined表示变量以声明但未对其赋值。