js 中包含两种不同数据类型的值
- 基本类型值
1. undefined
2. Null
3. Boolean
4. Number
5. String
- 引用类型值
1. Object
2. Array
3. Function
4. 基本包装类型
...
一:
- 对于 基本类型值 复制操作时,
1
2var num1 = 5
var num2 = num1
结果:
| 变量名 | 内存中 |
|---|---|
| num1 | 5 (内存中有自己的位置) |
| num2 | 5 (内存中有自己的位置) |
- 对于 引用类型值 复制操作时,
1
2var obj1 = { key: 'value'}
var obj2 = obj1
结果:
| 变量名 | 内存中 |
|---|---|
| obj1 | { key: ‘value’} (内存中有自己的位置) |
| obj2 | obj1 (内存中没有自己的位置,而是引用 obj1 的内存地址) |
二:
引用类型值 可以为其添加属性和方法 ,而 基本类型 则不可以1
2
3
4
5
6
7var person = {}
person.name = "Rabbit"
alert(person.name) // ''Rabbit''
//
var name = "Banana"
name.age = 24
alert(name.age) // undefined, 因为 基本类型 不能添加属性 age
三:
传递参数:
基本类型传递参数是复制一个值给参数1
2
3
4
5
6
7var addTen = function(num) {
return num+10
}
var a = 10
var r = addTen(r)
alert(a) // 10, a 还是 10,没有变化, addTen 函数操作并不是 a 变量
引用类型传递参数是把它的地址传递给参数1
2
3
4
5
6var setName = function(obj) {
obj.name = 'pinkBao'
}
var person = {}
setName(person)
alert(person.name) // 'pinkBao', 因为引用类型传递参数是把它的地址传递给参数,所以 setName 函数操作的实际上是 person 这个对象