第一章 类型
定义类型:对语言引擎和开发人员来说,类型是值得内部特征,它定义了值得行为,以使其区别于其他值。
内置类型
javascript 有七种内置类型:
- 空值(null)
- 未定义(undefined)
- 布尔值(boolean)
- 数字(number)
- 字符串(string)
- 对象(object)
- 符号(symbol ES6新增)
除对象之外,其他统称为“基本类型”
typeof undefined === "undefined"
返回的类型是字符串值。也就是需要加上""才是正确的
需要注意的情况
1.null
typeof null === "object" //true
=>使用复合条件来检测null值的类型
var a = null
(!a && typeof a === "object") //true
注:!a是为了确认a是null 还是 object(因为两者的值都返回object)
2.function
typeof console.log //"function"
function(函数) 实际上是object的一个”子类型”。函数是“可调用对象”,它有一个内部属性[[call]],该属性使其可以被调用。
函数不仅是对象,还可以拥有属性
function a(b,c){}
a.length //2 即函数声明的两个命名参数
3.array
数组也是对象,也是object的一个“子类型”。数组的元素按数字顺序进行索引,length属性是元素的个数
(对象是通过字符串键值)
值和类型
javascript 中的变量是没有类型的,只有值才有,变量可以随时持有任何类型的值
也就是说 语言引擎不要求变量总是持有与其初始值同类型的值。一个变量可以现在被赋值为字符串类型值,随后又被赋值为数字类型值。
var a = 42
typeof a //"number"
a = true
typeof a //"boolean"
typeof运算符总是返回一个字符串
typeof typeof 42 //"string"
undefined 和 undeclared(未声明)
已在作用域中声明但还没有赋值的变量,是undefined。相反,还没有在作用域中声明过的变量是undeclared的