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

基本类型

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

  1. function addTen(num){
  2. num=+10;
  3. return num;
  4. }
  5. var count=20;
  6. var result=addTen(count);
  7. alert(count);

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

引用类型

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

  1. function setName(obj){
  2. obj.name="nichos";
  3. }
  4. var person={
  5. name:"richas"
  6. };
  7. setName(person);
  8. alert(person.name);//nichos

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

  1. function setName(obj){
  2. obj.name="nichos";
  3. obj=new Object();
  4. obj.name="new name";
  5. }
  6. var person={
  7. name:"richas"
  8. };
  9. setName(person);
  10. alert(person.name);//nichos

下面再转个网友的个例子

  1. var ftn1 = function(){
  2.  
  3. console.log("test:ftn1");
  4.  
  5. };
  6.  
  7. var ftn2 = function(){
  8.  
  9. console.log("test:ftn2");
  10.  
  11. };
  12.  
  13. function ftn(f){
  14.  
  15. f();
  16.  
  17. f = ftn2;
  18.  
  19. }
  20.  
  21. ftn(ftn1);// 运行结果:test:ftn1
  22.  
  23. console.log("====================华丽的分割线======================");
  24.  
  25. ftn1();// 运行结果:test:ftn1

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

  1. var ftn1 = function(){
  2.  
  3. console.log("test:ftn1");
  4.  
  5. };
  6.  
  7. var ftn2 = function(){
  8.  
  9. console.log("test:ftn2");
  10.  
  11. };
  12.  
  13. function ftn(f){
  14.  
  15. f();//test:ftn1
  16.  
  17. f = ftn2;
  18. f();//test:ftn2
  19.  
  20. }
  21.  
  22. ftn(ftn1);// 运行结果:test:ftn1
  23.  
  24. console.log("====================华丽的分割线======================");
  25.  
  26. ftn1();// 运行结果:test:ftn1

js中函数参数基本类型和引用类型的区别的更多相关文章

  1. Java Native Interface 二 JNI中对Java基本类型和引用类型的处理

    本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...

  2. JS中函数参数和函数返回值的理解

    函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能 ...

  3. [转]javascript中基本类型和引用类型的区别分析

    基本类型和引用类型 ECMAScript包含两个不同类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段:引用类型值指由多个值构成的对象.当我们把变量赋值给一个变量时,解析器首先要做的就是确 ...

  4. javascript中基本类型和引用类型的区别分析

    大多数人系统学习过的程序设计语言,在这些语言的学习过程中最早学到的几个要点之一就是值类型和引用类型的区别.下面我们来看一下在 JavaScript 中基本数据类型(Primitive Types)和引 ...

  5. js 中的基本类型和引用类型的区别

    js中的基本类型赋值之后,只有值相等的时候,二者才会相等,例如 var  a='123'; var b=a; console.log(a===b); 返回的是true ,说明他们是相等的, 此时改变a ...

  6. 【js】基本类型和引用类型的区别

    1.保存方式:(一脸懵逼???) 基本类型是按值访问的,可以在变量的生命周期改变它,但是它是储存在哪里的呢?在浏览器缓存吗?[执行环境中定义的所有变量和函数都存储在执行环境的变量对象里,变量对象我们编 ...

  7. php与js中函数参数的默认值设置

    php函数参数默认值设置: <?phpfunction test($val=3){   echo $val."<br/>";}test(11);test();?& ...

  8. 【转】Javascript基本类型和引用类型的区别

    根据[转贴]进一步补充 今天明白了一个困扰很久的问题:引用类型和基本类型的区别与联系要明白这个问题,首先需要理解堆栈的概念.那什么又是堆栈,有什么区别和联系呢?堆:首先堆是动态分配的,JVM并不会自动 ...

  9. js中的值类型和引用类型的区别

    1.JavaScript中的变量类型有哪些? (1)值类型(基本类型):字符串(String).数值(Number).布尔值(Boolean).Undefined.Null  (这5种基本数据类型是按 ...

随机推荐

  1. linux杂记(四)热键[Tab],[ctrl]-c,[ctrl]-d,在线求助man page/info page

    [Tab]按键 他具有[命令补全](接在一串指令的第一个字后面)与[档案补齐](接在第一串指令的第二字以后时)的功能.如 [KANO@kelvin ~]$ ca[tab][tab] cabextrac ...

  2. 写了个小爬虫,为何用上代理ip总是出现错误。

    import urllib.request import re import os import random import threading def url_open(url): #在第8到第12 ...

  3. MySQL zerofill 的用法

    creata table t(x int(6) zerofill,y int); insert into t(x,y) values(1,1); select x,y from t;

  4. Android 5.x新特性之elevation(阴影),tinting(着色)以及clipping(剪裁)

    快过年了,公司也没事做了, 自己也闲了下来,一天天呆着真没意思,闲来没事自己研究研究了Google I/O 2014 发布 Material Design设计,人性化的风格,丰富的色彩,使人机交互更完 ...

  5. Html小插件

    1.天气预报插件 效果图: 源代码: <iframe width="650" scrolling="no" height="60" f ...

  6. UIWindow 详解

    UIWindow对象是所有UIView的根视图,管理和协调的应用程序的显示.分发事件给View.UIWindow类是UIView的子类,可以看作是特殊的UIView.一般应用程序只有一个UIWindo ...

  7. ruiy_ocfs2

    http://docs.oracle.com/cd/E37670_01/E37355/html/ol_instcfg_ocfs2.html

  8. sonix uvc驱动的加入 RT5350支持H264

    依据sonix提供的驱动,须要在内核下进行配置,以加入到内核或与模块的方式进行编译: 1.makefile中加入驱动的文件夹,尽量保持和原有的一致, obj-$(CONFIG_USB_SN9C102) ...

  9. JavaScript 实现Map

    var map=new Map(); map.put("a","A");map.put("b","B");map.put ...

  10. IE能够打开网页 可是chrome和火狐打不开网页解决的方法

    一次偶然.电脑的浏览器打不开经常使用的网页,奇怪的是IE能够打开 之外的其它浏览器都不能够,结果百度一下.找到一个帖子,亲自測试一下,果真能够解决.记录例如以下: (1)開始-执行-输入CMD-确定- ...