- js内置类型
js中有七中内置的数据类型,其中有六种基本数据类型,一种复合数据类型.- 基本数据类型
- 空值(null)
- 为定义(undefined)
- 布尔值(boolean)
- 数字(number)
- 字符串(string)
- 符号(symbol)
- 复合数据类型
- 对象(object)
- 基本数据类型
类型检测
在js中我们可以使用typeof运算符来查看值的类型,它返回的是类型的字符串值。在js中的变量是没有类型的,只有值才有。变量是可以随时持有任何类型的值,在对变量执行typeof操作时,得到的结果并不是该变量的类型,而是该变量持有的值的类型,因为在js中的变量没有类型。1
2
3
4
5
6
7typeof undefined // "undefined"
typeof true // "boolean"
typeof 42 // "number"
typeof "42" // "string"
typeof {a:1} // "object"
typeof Symbol() // "Symbol"
typeof null // "object"⚠️注意:js中对null的typeof判断是存在bug的。null的typeof正确的返回结果应该是null.这个是js产生的以恶搞由来已久的bug.对null的类型进行正确的检测可以使用以下的方式
1
2
3function isNull(param){
return !param && typeof param === 'object'
}- 函数
js中的函数是object的一个”子类型”。具体的来说就是函数是一个”可调用对象
“,其内部存在一个属性[[call]],该属性使得函数可以被调用。由于函数是object的子类型,所以函数可以拥有属性。
- 函数
undefined和undeclared
已在作用域中声明但还没有赋值的变量是undefined。相反,还没有在作用域中声明过的变量是undeclared。1
2
3var a;
a; // undefined
b; // b is not definedtypeof在处理undeclared的变量时,是将其处理为undefined。这是一个特殊的安全防范机制
js类型
Last updated: