在很多人的眼中,Javascript这中动态语言,是没有类型(type)的,但事实上对于JS来说掌握它的类型是非常重要的,对JS来说类型是值的内部特征,它定义了值的行为,以使其区别于其他值。
1. 内置类型
JS有七种内置的类型,分别是:
- Number
- String
- Boolean
- Symbol
- Object
- Null
- Undefined
这七种类型除Object外都是基本类型。
当使用typeof操作符来查看值的类型时,返回的是对应类型的字符串。例如:typeof 1 === "number" //true
但是需要注意的是,Null类型不在此列,当你使用typeof查看null的类型时,返回的会是“object”,typeof null === "object" // true
JS的这个bug由来已久,至今没有修复。所以,检测一个值是不是“object”类型时,需要使用复合条件:
var a;
!a && typeof a === "true"
只有同时满足这两个条件,a才是一个“object”类型的值。
2. 变量和值的类型
首先,对于Javascript这种“动态语言”,变量是没有类型的,语言引擎不要求变量总是持有与其初始值同类型的值,变量可以随时持任何类型的值,换句话说就是Javascript不做“类型强制”。
那么所谓的变量的类型指的是变量所持有的值的类型。
2.1 undefined 和 not defined
在这里还需要注意一点的是undefined和 is not defined的区别:
当调用一个已经申明,但未赋值的变量时,它是undefined;
当调用一个未被申明的变量时,引擎会报错,is not defined;
但是,bug又来了,当你使用typeof来查看一个未被赋值的变量和一个未被申明的变量时,它返回的结果都是 undefined。
var a;
typeof a === "undefined"//true
typeof b === "undefined"//true
以上,就是对于Javascript类型的介绍。
网友评论