美文网首页
前端进阶|第八天 京东笔试题,引用传参赋值无效?

前端进阶|第八天 京东笔试题,引用传参赋值无效?

作者: 皮卡球ca | 来源:发表于2019-10-17 16:18 被阅读0次
       function changeObjProperty(o) {
            o.siteUrl = "http://www.baidu.com"
            o = new Object()
            o.siteUrl = "http://www.google.com"
        }
        let webSite = new Object();
        changeObjProperty(webSite);
        console.log(webSite.siteUrl);

打印结果是 http://www.baidu.com
website明明是把参数地址传进了changeObjProperty,为什么函数里面对website的值修改,没有生效呢?
问题出在 o = new Object(),这个方法的作用就是将o的地址指向了新的地址,那么对o的操作将与website无关。
为了证实我们的猜想,把代码稍作修改。

 function changeObjProperty(o) {
            o.siteUrl = "http://www.baidu.com"
            o.name="百度"
            o = new Object()
            o.siteUrl = "http://www.google.com"
            o.name="谷歌"
        }
        let webSite = new Object();
        webSite.siteUrl="http://www.jd.com"
        webSite.name="京东"
        changeObjProperty(webSite);
        console.log(webSite.siteUrl);
        console.log(webSite.name);
image.png

我们可以看到,在o重新赋值之前,对参数的修改是生效的,这也就证明,这个第一次未生效并非是指传递造成的。而在o被重新初始化之后,地址已经指向新的对象,修改并不会返回。

所以注意一点,js中new Object会重新生成对象,而不会覆盖,对新对象的操作将与原对象无关。

相关文章

  • 前端进阶|第八天 京东笔试题,引用传参赋值无效?

    打印结果是 http://www.baidu.comwebsite明明是把参数地址传进了changeObjProp...

  • 值类型数据和引用类型数据的区别

    一、值类型赋值 二、引用类型赋值 三、举栗子 四、总结 在调用函数的时候,传参的过程其实就是用实参给形参赋值的过程...

  • 纯Swift实现对象拷贝

    在Swift中,类是引用类型,引用类型在赋值和传参时都是操作的引用,这些引用指向同一个对象。如下,对classA的...

  • Restful风格

    传统的前端传参: 传统的参数接收: restful前端传参: restful的参数接收:

  • 基础知识点

    基础知识点 单双引号 传值方式 赋值传值 : 赋值时直接赋值固定值 引用传值: 参考文章:PHP取地址符(引用符)...

  • Python脚本传参(argparse模块)2022-08-23

    Python传参 简便版 进阶版 Python使用argparse模块传参 Python系统自带的传参用到sys模...

  • 函数--函数调用

    调用函数,需要知道函数的名称和参数结构 函数参数 函数传参实际是一种赋值,将调用者的引用值赋值给被调用函数的局部变...

  • Vue中如何方法传参给data赋值

    如果想在方法传参中给this.code赋值

  • this.$router.push() 传参

    1、params 传参 params传参, 路径不能使用path 只能使用name,否则params将无效。 取数...

  • less

    初级一:class定义,移植 初级二:class定义,传参,赋值 初级三:class定义,传餐,赋值默认值 初级四...

网友评论

      本文标题:前端进阶|第八天 京东笔试题,引用传参赋值无效?

      本文链接:https://www.haomeiwen.com/subject/uejayctx.html