问题: var a = xxx, a内存中到底保存的是什么?
xxx为基本数据,a保存的就是这个数据
xxxx是对象,保存的是对象的地址值
xxx是一个变量,保存的xxx的内存内容(可能是基本数据,也可能是地址值)
<script type="text/javascript">
var a=3;
a=function(){
}
var b='abc'
a=b;//abc
b={}
a=b//地址值
</script>
关于引用变量赋值问题?
2个引用对象指向同一个对象,通过一个变量修改对象内部数据,另一个变量看到的是修改之后的数据
var obj1={name:'tom'}
var obj2=obj1//将obj1的内容保存给obj2,只不过obj1内容为地址值
obj1.name='jack'
console.log(obj2.name)//'jack'
var obj1={name:'tom'}
var obj2=obj1//将obj1的内容保存给obj2,只不过obj1内容为地址值
obj1.name='jack'
console.log(obj2.name)//'jack'
function fn (obj){
obj.name='Bob'
}
fn(obj1)
console.log(obj2.name)
请问是Bob还是tom?
Bob
fn(obj1)中的obj1是实参
function fn (obj){
obj.name='Bob'
}中的obj是形参
实参赋值给形参,就是相当于把内部数据赋值给obj,只不过是地址值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>02_关于引用变量赋值问题</title>
</head>
<body>
<!--
关于引用变量赋值问题
n个引用对象指向同一个对象,通过一个变量修改对象内部数据,其他所有变量看到的是修改之后的数据
-->
<script type="text/javascript">
var obj1={name:'tom'}
var obj2=obj1//将obj1的内容保存给obj2,只不过obj1内容为地址值
obj1.name='jack'
console.log(obj2.name)//'jack'
function fn (obj){
obj.name='Bob'
}
fn(obj1)
console.log(obj2.name)//Bob
</script>
</body>
</html>
var a={age:12}
var b=a
a={name:'bob'}
console.log(b.age)
请问b是什么值
在没有进行第24行时,a和b都指向同一个地址值的堆中,但27行的a={name:'bob'},这时,a指向先前的地址连接改变了,重新指向了name这块地址,而b还是不变
2个引用对象指向同一个对象,让其中一个引用对象指向另一个对象,另一引用变量依然指向前一个变量
var a={age:12}
var b=a
a={name:'bob',age:18}
b.age=14
// b=a
console.log(b.name,a.name,a.age)//12 bob 18
function fn2(obj){
obj={age:15}
}
fn2(a)
console.log(a.age)
请问a.age的值为什么
age=18
这里obj中传入的是实参a的地址值,但是obj在函数中重新被赋值了一个地址值,和a没有关系了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>02_关于引用变量赋值问题</title>
</head>
<body>
<!--
关于引用变量赋值问题
n个引用对象指向同一个对象,通过一个变量修改对象内部数据,其他所有变量看到的是修改之后的数据
2个引用对象指向同一个对象,让其中一个引用对象指向另一个对象,另一引用变量依然指向前一个变量
-->
<script type="text/javascript">
var obj1={name:'tom'}
var obj2=obj1//将obj1的内容保存给obj2,只不过obj1内容为地址值
obj1.name='jack'
console.log(obj2.name)//'jack'
function fn (obj){
obj.name='Bob'
}
fn(obj1)
console.log(obj2.name)//Bob
var a={age:12}
var b=a
a={name:'bob',age:18}
b.age=14
// b=a
console.log(b.name,a.name,a.age)//12 bob 18
function fn2(obj){
obj={age:15}
}
fn2(a)
console.log(a.age)//
</script>
</body>
</html>