函数传值传参

Posted rencoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数传值传参相关的知识,希望对你有一定的参考价值。

var obj = {n:1};
(function(obj){
    console.log(obj.n); //1
    obj.n=3;
    var obj = {n:2}; // 传入参数obj 与 这里再次声明, 会形成重复声明
    console.log(obj.n) //2
})(obj);
console.log(obj.n); //3

var obj1 = {n:1};
function fn(obj1){
    console.log(obj1.n); //1
    obj1.n=3;
    obj1 = {n:2};
    console.log(obj1.n) //2
}
fn(obj1);
console.log(obj1.n); //3

var x = 1;
function a(x{
    // 形参有自己的作用域, 独立于函数外的作用域, 因此不会影响外面的x
    console.log(x);  // 1
    x = 2;
    console.log(x); // 2
}
a(x);
console.log(x); // 1

var obj2 = {n:1};
function b(obj2{
    // js传值; 对象传递的是指针(复制一份指针)
    console.log(obj2.n); // 1
    obj2.n = 2// 引用类型改变相互影响
    obj2 = {n:3}; // 将函数内部变量obj指针从{n:1}变为{n:2}; 外部obj的指针不变, 还是{n:1}
    console.log(obj2.n); // 3
}
b(obj2);
console.log(obj2.n); // 2

// 函数参数的声明相当与函数内部声明








































以上是关于函数传值传参的主要内容,如果未能解决你的问题,请参考以下文章

C语言中的值传参和引用传参是指啥?

闭包函数,装饰器

062-PHP函数按值传参,交换数值函数

页面传值

php函数值传值/地址以及引用的用法

值传递和引用传递的区别