JavaScript 代码,在浏览器中运行的结果是

毕设小屋 课程设计 1
var foo = {n:1};
(function(foo){
    console.log(foo.n);
    foo.n = 3;
    var foo = {n:2};
    console.log(foo.n);
})(foo);
console.log(foo.n);

回复

共2条回复 我来回复
  • 毕设导航
    这个人很懒,什么都没有留下~
    评论
    var foo = {n:1};
    (function(foo){            //形参foo同实参foo一样指向同一片内存空间,这个空间里的n的值为1
        var foo;               //优先级低于形参,无效。
        console.log(foo.n);    //输出1
        foo.n = 3;             //形参与实参foo指向的内存空间里的n的值被改为3
        foo = {n:2};           //形参foo指向了新的内存空间,里面n的值为2.
        console.log(foo.n);    //输出新的内存空间的n的值
    })(foo);
    console.log(foo.n);        //实参foo的指向还是原来的内存空间,里面的n的值为3.
    
    0条评论
  • 源码驿站
    这个人很懒,什么都没有留下~
    评论

    1、函数参数是原始类型的值(数值、字符串、布尔值),传递方式是传值传递,即在函数体内修改参数值,不会影响到函数外部。

    2、函数参数是复合类型的值(数组、对象、其他函数),传递方式是传址传递,传入的是原始值的地址,因此在函数内部修改参数,将会影响到原始值。

    注意,如果函数内部修改的,不是参数对象的某个属性,而是替换掉整个参数,这时不会影响到原始值!

    0条评论

发表回复

登录后才能评论