高级程序设计中说明,所有函数的参数都是按值传递的。

基本类型

向参数传递基本类型的值时,被传递的值会被复制给对应的命名参数

function addTen(num){
    num=+10;
    return num;
}
var count=20;
var result=addTen(count);
alert(count);

在函数内部,num的值被加上10,但不影响外部count变量的值

引用类型

在向参数传递引用类型的值时,把这个值在内存中的地址复制给对应的局部变量,如果这个局部变量没有重新赋值,那它在函数内部的变化将反应到外部

function setName(obj){
  obj.name="nichos";
}
var person={
  name:"richas"
};
setName(person);
alert(person.name);//nichos

如果被重新赋值给新的对象,这之后变化将不影响外部的变化。

function setName(obj){
  obj.name="nichos";
  obj=new Object();
  obj.name="new name";
}
var person={
  name:"richas"
};
setName(person);
alert(person.name);//nichos

下面再转个网友的个例子

 var ftn1 = function(){

        console.log("test:ftn1");

    };

    var ftn2 = function(){

        console.log("test:ftn2");

    };

    function ftn(f){

       f();

       f = ftn2;

    }

    ftn(ftn1);// 运行结果:test:ftn1

    console.log("====================华丽的分割线======================");

    ftn1();// 运行结果:test:ftn1

为什么不是test:ftn2,那是因为参数f被赋值给f2对象的地址后,跟外面的f1已经没关系了,所以结果还是f1

 var ftn1 = function(){

        console.log("test:ftn1");

    };

    var ftn2 = function(){

        console.log("test:ftn2");

    };

    function ftn(f){

       f();//test:ftn1

       f = ftn2;
       f();//test:ftn2

    }

    ftn(ftn1);// 运行结果:test:ftn1

    console.log("====================华丽的分割线======================");

    ftn1();// 运行结果:test:ftn1

最新文章

  1. Yii2.0 对的一些简单的操作
  2. nginx---------------nginx的nginx_status配置
  3. jq
  4. UVA11324 强连通+dp记忆化搜索
  5. dancing link
  6. Linux远程文件传输
  7. JavaScript之表格过滤器
  8. Spark Streaming 原理剖析
  9. Mtom Encoding in WCF
  10. 无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。
  11. Docker自学资源
  12. 开源html5_kiwijs_helloworld
  13. Spring 下 MyBatis 的基本使用
  14. Gitlab的安装
  15. 大数据:Hive - ORC 文件存储格式
  16. 【BZOJ4553】【TJOI2016】【HEOI2016】序列
  17. [AX]AX2012 R2 采购订单的“Request change”
  18. DES对 json 、http参数加密解密算法
  19. 【转】提高你开发效率的十五个Visual Studio 2010使用技巧
  20. MFC开发小技巧总结

热门文章

  1. DDR、DDR2、DDR3产品区别
  2. qcow2、raw、vmdk等镜像格式
  3. 浅谈 android-query
  4. Oracle的TPCC测试,原来也是个作弊的东西...
  5. ArrayList和LinkedList的各项操作性能比较
  6. java常用日期函数总结
  7. ubuntu12.04下 安装虚拟主机
  8. 网页解析不了PHP源代码的解决方法
  9. HTML5 postMessage 和 onmessage API 具体应用
  10. SDWebImage缓存