zoukankan      html  css  js  c++  java
  • js中函数的参数传递

    js中所有函数的参数传递都是按值传递,也就是说把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样,基本类型值的传递如同基本类型变量的复制一样,而引用类型的值的传递则如同引用类型变量的复制一样。很多开发人员错误的认为在局部作用域中修改对象会在全局作用域中反映出来就说明参数是按引用传递的,其实对象也是按值传递的:

    function setName(obj){
        obj.name="nike";
        obj=new Object();
        obj.name="bike";  
    }
    var person=new Object();
    setName(person);
    alert(person.name);    //"nike"

    在把person传递给setName()后其name属性被设置为"nike"。然后又将一个新对象赋给变量obj,同时将其name属性设置为"bike",如果person是按引用传递的那么person将会被修改为指向其name属性值为"bike"的新对象。然而并没有,这说明即使在函数内部修改了参数的值但原始的引用仍然保持不变。我们可以把函数的参数想象成局部变量,当函数内部重写obj时,这个变量引用的就是一个局部对象,而这个局部对象会在函数执行完毕后立即呗销毁。

    //对象也是按值传递的
    function setname(obj) { console.log(obj); //object1:此obj等于传递进来的per对象, obj.name = "姓名1"; obj = new Object(); //object2:此obj只是函数内部的一个局部对象,与传递进来的参数对象不是同一个对象 obj.name = "姓名2"; console.log(obj); } var per = new Object(); per.age = 15; setname(per); //object1:{age: 15}。 object2: {name: "姓名2"}, console.log(per); //修改后的object {age: 15, name: "姓名1"}
  • 相关阅读:
    ECMAScript 引用类型Object 对象
    jQuery Form Plugin
    在 PHP5 中使用 DOM 控制 XML
    JavaScript encodeURI()和encodeURIComponent() 函数
    程序员进阶的建议:多看、多写、多交流
    jQuery 取 css zindex 值在各种浏览器中的返回值
    XPath 语法教程(Tutorial_2)
    使用 strpos 需要注意 === 运算符
    关于代码开发规范和原则
    PHP 编写大型网站问题集
  • 原文地址:https://www.cnblogs.com/mybwhy/p/7261933.html
Copyright © 2011-2022 走看看