前言
由于之前的一次面试中被问到js有几种类型,我回答了8种,并回答了哪8种。但很显然看对方的表情就知道这不是她想要的答案。回家在整理的时候知道js的类型分为两类:原始类型(primitive type)和对象类型(object type)。于是写了这篇文章做一个总结。
JavaScript原始类型和对象类型有哪些
- 原始类型:Number,Boolean,String,Null,Undefined
- 对象类型:Object,Array,Function
不可变的原始值和可变的对象引用
原始值
原始值都是不可更改的:任何方法都无法更改一个原始值。对于数字,布尔值,Null和Undefined来说很显然在被创建出来后是不可改变的,变量只能通过更改指向别的内存空间来改变变量的值。而对于字符串来说就不是那么明显了,因为字符串看起来和数组有很多共通点,我们会认为字符串可以像数组一样通过制定的索引来修改其中的字符。事实上,javascript是禁止这样做的。
对于原始值的比较。只要两个原始值相同即相等,如果两个字符串比较,当且仅当他们的长度相等且每个索引字符都相等时,它们相等。
对象引用
对象类型和原始类型不同,首先它们是可变的,它们的值是可修改的。
对象类型的比较与值类型不同,即使两个对象包含同样属性及相同的值,它们也不相等。对象的比较均是引用的比较,当且仅当它们引用同一个基对象时,它们才相等。