按值传递和引用传递

2018-07-26sad creeper

在JavaScript中,基础类型变量是按值传递的,对象类型变量是引用传递的

var a;
var b=a;
a=3;
console.log('b=', b);// b= undefined 因为基础类型变量是按值传递,b=a 会给b创建一块新内存,a的改变不会影响到b


var a={name:'M416'};
var b=a;
console.log('b=', b);// b= {name:'M416'}
a.name = '98k';
console.log('b=', b);// b={name:'98k'} 因为对象类型变量是引用传递,b=a 会使b指向a所指向的内存,a的改变会影响到b
a = {name:'Scar'};
console.log('b=', b);// b={name:'98k'} 因为给a赋值了一个新的对象,所以a指向了一块新的内存,但是b还是指向之前的内存

阅读 38 评论