JS变量赋值
程序员文章站
2022-07-09 19:39:30
一、基本数据类型: Number, String等都是按值传递 var a = 10 function add(num){ num+=10 } add(a) console.log(a) 最后输出a时,仍然是10,说明a与函数内部的num互不干扰。其实此时可以把命名参数看成是局部参数,函数运行结束, ......
一、基本数据类型: number, string等都是按值传递
var a = 10 function add(num){ num+=10 } add(a) console.log(a)
最后输出a时,仍然是10,说明a与函数内部的num互不干扰。其实此时可以把命名参数看成是局部参数,函数运行结束,它也随之销毁。而它是按值传递的,复制了内存中的一份值给num。所以内部对num的操作不影响全局变量a的值。
二、引用变量赋值
1.多个引用变量指向同一个对象, 通过一个引用变量修改对象内部数据, 另一个引用变量访问到的是修改后的对象
var obj1 = {} var obj2 = obj1 obj2.name = 'tom' console.log(obj1.name)//tom
function f1(obj) { obj.age = 12 } f1(obj2) console.log(obj1.age)//12
都是修改的同一个对象的属性
2. 多个引用变量指向同一个对象,让一个引用变量指向另一个对象, 另一个引用变量还是指向原来的对象
var obj3 = {name: 'tom'} var obj4 = obj3 obj3 = {name: 'jack'}//obj3指向了另一个对象,此时obj4还是指向原来obj3当初指向的对象 console.log(obj4.name)//tom function f2(obj) { obj = {name: 'bob'} }
f2(obj4) console.log(obj4.name)//tom
执行 f2(obj4) 时,obj指向obj4的地址,然后在函数体内obj又指向了另一个对象,obj4不受影响。
from:https://blog.csdn.net/weixin_39728230/article/details/80607294