引用变量赋值

14 篇文章 0 订阅

1、修改数据
对象:

let obj1 = {
    name:'1111'
}
let obj2 = obj1
console.log(obj1);//{ name: '1111' }
console.log(obj2);//{ name: '1111' }
//修改对象内部数据  会影响
obj2.age = 18
// //或者
// obj2['age'] = 18
console.log(obj1);//{ name: '1111', age: 18 }
console.log(obj2);//{ name: '1111', age: 18 }

数组:

let arr1 = ['盛明兰','小桃']
let arr2 = arr1
console.log(arr1);//[ '盛明兰', '小桃' ]
console.log(arr2);//[ '盛明兰', '小桃' ]
arr1[2] = '丹橘'
console.log(arr1);//[ '盛明兰', '小桃', '丹橘' ]
console.log(arr2);//[ '盛明兰', '小桃', '丹橘' ]

2、指向另一个对象

let obj1 = {
    name:'1111'
}
let obj2 = obj1
console.log(obj1);//{ name: '1111' }
console.log(obj2);//{ name: '1111' }
//obj1 指向另一对象
obj1 = {
    age:18
}
console.log(obj1);//{ age: 18 }
//obj2仍然指向之前的
console.log(obj2);//{ name: '1111' }
let arr1 = ['盛明兰','小桃']
let arr2 = arr1
console.log(arr1);//[ '盛明兰', '小桃' ]
console.log(arr2);//[ '盛明兰', '小桃' ]
//arr1 指向新的
arr1 = ['顾廷烨','石头']
console.log(arr1);//[ '顾廷烨', '石头' ]
//arr2 仍然是之前的
console.log(arr2);//[ '盛明兰', '小桃' ]

3、传参
对象:

let obj1 = {
    name:'1111'
}
let obj2 = obj1
console.log(obj1);//{ name: '1111' }
console.log(obj2);//{ name: '1111' }
//将obj1 的地址 拷贝给obj
function fn(obj){
//修改对象内部数据  会影响
    obj.name = '2222'
}
//传的实参是引用类型   传的是地址
fn(obj1)
console.log(obj1);//{ name: '2222' }
console.log(obj2);//{ name: '2222' }

数组:

let arr1 = ['盛明兰','小桃']
let arr2 = arr1
console.log(arr1);//[ '盛明兰', '小桃' ]
console.log(arr2);//[ '盛明兰', '小桃' ]
function fn(arr){
//修改内部数据  会影响
    arr.push('丹橘')
}
fn(arr1)
console.log(arr1);//[ '盛明兰', '小桃', '丹橘' ]
console.log(arr2);//[ '盛明兰', '小桃', '丹橘' ]

指向新的对象:
对象:

let obj1 = {
    name:'1111'
}
let obj2 = obj1
console.log(obj1);//{ name: '1111' }
console.log(obj2);//{ name: '1111' }
//将obj1 的地址 拷贝给obj
function fn(obj){
    //这里的obj 指向另一对象了  与obj1无关  也不会修改到obj1
    obj = {
        name:'2222'
    }
}
fn(obj1)
console.log(obj1);//{ name: '1111' }
console.log(obj2);//{ name: '1111' }

数组:

let arr1 = ['盛明兰','小桃']
let arr2 = arr1
console.log(arr1);//[ '盛明兰', '小桃' ]
console.log(arr2);//[ '盛明兰', '小桃' ]
//传的实参是引用类型   传的是地址
function fn(arr){
    //指向新的引用类型 
    arr = ['顾廷烨','石头']
}
fn(arr1)
console.log(arr1);//[ '盛明兰', '小桃']
console.log(arr2);//[ '盛明兰', '小桃']

例子:

let x = [1,2]
//传的是地址
function fn(y){
    y[0] = 100  //修改内部数据  同时修改了实参的数组x
    y = [3]    // 指向新的
    y[1] = 4
    console.log(y);// [ 3, 4 ]
}
console.log(x);//[ 1, 2 ]
fn(x)
console.log(x);//[ 100, 2 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值