基本类型和引用类型作为函数参数传递

2018-03-07  本文已影响0人  praycis

基本类型是按值传递的:

var a = 1;
var b = function(num) {
  num += 1;
  return num;
}

b(a); //=>2
a //=>1
//当把a作为传递到函数之后,在函数内部进行加1操作之后,num变成了2,但是函数外部的a仍然为1,说明被传递的a被复制了一份给了一个局部变量。

引用类型也是按值传递的:

var person = {}

var setName = function(params) {
    params.name = 'leexiaoyong';
}

setName(person); 
console.log(person); //=>{name: 'leexiaoyong'};

//引用类型是把person在内存中的地址传递给了局部变量params,当params改变时,指针指向的内存中的对象也相应的发生了变化。所以外部的对象也跟着发生了变化。但是它也是作为值传递的,而不是引用。

证明引用类型是按值传递的例子:

function setName(obj){
    obj.name = 'leexiaoyong';
    obj = new Object(); //这里创建了一个新对象,其实是在局部变量中创建了一个新对象,这个对象在函数执行完成之后就会被销毁
    obj.name = 'suwenli';
}
var person = new Object();
setName('liyuhong');
person //=>{'name': 'leexiaoyong'}
上一篇 下一篇

猜你喜欢

热点阅读