JavaScript是一种弱类型脚本语言,所谓弱类型指的是定义变量时,不需要定义是什么类型,在程序运行的过程中会自动进行判断。
ECMAScript中定义了6中原始数据类型,1种复杂数据类型。(6+1)
原始类型、复杂类型
原始数据类型
- undefined
- null
- number
- string
- boolean
- symbol
复杂数据类型
- object
判断数据类型的方法
typeof
typeof xxx的取值
- undefined
- number
- string
- boolean
- symbol
- function
- object
typeof注意点
typeof null结果为object,实际这是typeof的一个bug,null为原始值,非引用类型typeof [1,2]结果是object,结果中没有array这一项,引用类型除了function,其它都是objecttypeof Symbol()结果为symbol
instanceof
用于实例和构造函数对应。判断数组:[1,2] instanceof Array
值类型、引用类型
值类型
按值传递,传递时,复制一份。
引用类型
按共享传递,传递时,指向同一片内存空间。
按值传递的类型,复制一份存入栈内存,这类类型一般不占用太多内存,而且值传递保证了器访问速度。 按共享传递,是复制其引用,而不是复制其值,保证过大对象不会因为不停复制内容而造成内存浪费。