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



    ECMAScript 中所有函数的参数都是按值传递的。

    也就是说,把函数外部的值复制给函数内部的参数(值从一个变量复制到另一个变量一样)。



    代码验证


    向参数传递基本类型

    function addTen(num) { 
        num += 10; 
    }
    var count = 20; 
    addTen(count); 
    alert(count); //20,没有变化; 如果是按引用传递的会变成 30
    

    向参数传递引用类型

    function setName(obj) { 
        obj.name = "Nicholas"; 
        obj = new Object(); // **重点:如果按引用传递,外部参数会被重新赋值。
        obj.name = "Greg"; 
    } 
    var person = new Object(); 
    setName(person); 
    alert(person.name); //"Nicholas" ; 如果是按引用传递的会变成 "Greg"
    

    代码解读:

    1. 外部变量person对象的地址值,复制给内部参数obj (值传递),而不是“直接引用该地址值”(引用传递)
    2. 修改 obj.name = "Nicholas" // 因为obj复制了person的地址,所以person.name变成了"Nicholas"
    3. obj = new Object(); // 内部参数 obj 重新赋值,指向新的对象。
    4. obj.name = "Greg"; // 因为内部参数 obj 不再指向person的地址,所以person.name任然为"Nicholas"


    总结

    简单地说(个人理解),

    按值传递参数就是,在函数内部,新建一个变量,复制传入的参数。

    按引用传递就是,函数内部的形参,直接引用这个实参。对形参的任何修改,就是直接在这个实参上的修改。



    参考

    《JavaScript高级程序设计》.第3版 4.1.3 传递参数

  • 相关阅读:
    Base64正反编码
    json数据测试接口
    ajax上传进度条
    ajax利用php上传图片
    ajax缓存 header头文件
    ajax同步与异步
    ajax的post请求与编码
    ajax的get请求与编码
    ajax获取服务器响应信息
    创建ajax对象
  • 原文地址:https://www.cnblogs.com/huangtq/p/15544599.html
Copyright © 2011-2022 走看看