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

不管是传基本类型的值还是引用类型的值都是按值传递,访问变量则分按值和按引用两种方式。

向参数传递基本类型的值

被传递的值会被复制(对应文章《基本类型和引用类型的值--复制变量值》)给函数内部的一个局部变量。(即命名参数,也就是argument对象的一个元素)

function addTen(num){num += 10;return num;
};
var count = 20;
var result = addTen(count);
alter(count); //20,没有变化
alter(result); //30
复制代码

函数addTen的一个参数num,实际上是函数addTen内部的一个局部变量,仅仅供函数内部使用,count只是将其值复制了一份给了局部变量num。两个变量互不影响。

向参数传递引用类型的值

被传递的值会被复制(对应文章《基本类型和引用类型的值--复制变量值》)给函数内部的一个局部变量,(即命名参数,也就是argument对象的一个元素)和传递基本类型的值一样。不同的是这里的值应该是指引用类型的值对应的内存地址。

function setName(obj){obj.name = 'Zeng';
};
var preson = "John";
setName(preson);
alter(preson.name); //"Zeng"
复制代码

这样一来,obj和preson引用的是同一个对象。改变obj,就会改变preson,这两个对象指向的对象在堆内存中只有一个。

为什么不是按引用传递的呢?

function setName(obj){obj.name = 'Zeng';obj = new Object(); //一个新的对象重新赋值给obj,这样obj和preson引用的就不是同一个对象了。此时的obj和preson互不影响。obj.name = 'Sam';
};
var preson  = new Object();
setName(preson);
alert(preson); //Zeng
复制代码

转载于:https://juejin.im/post/5c08931d5188251719358c34

基本类型和引用类型的值 函数的传递参数相关推荐

  1. Javascript高级程序设计——基本类型和引用类型的值

    ECMAScript中的变量有两种不同的数据类型的值: 基本类型:基本类型的值是简单的数据段.包括:Undefined.Null.Number.Boolean.String五种 引用类型:引用类型的值 ...

  2. ECMAScript中基本类型和引用类型的值在复制变量值时的区别

    一. 复制基本类型变量的值 如果从一个变量向另一个变量复制基本类型的值时,会在原变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上. 举例: var a1=5; var a2=a1; ale ...

  3. javascript变量中基本类型和引用类型的详解解读

    前言: Javascript语言中的变量和其他语言的变量有很大区别,javascript松散类型的本质,决定了它只是在特定时间时间保存特定值得名字而已.由于不存在定义某个变量必须保存何种数据类型值的规 ...

  4. java面向对象(类与对象,局部变量成员变量,基本类型和引用类型作为参数传递)...

    一.类和对象的区别 类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体 可以将玩具模型看作是一个类,将一个个玩具看作对象,从玩具模型和玩具之间的关系便可以看出类与对象之间的关系.类用于描述 ...

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

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

  6. JavaScript 基本类型和引用类型区别

    基本概念 JS有以下这些数据类型:undefined.null.string.boolean.number.symbol.bigint.object. 其中,前面 7 个被称为基本类型,又叫原始类型( ...

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

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

  8. JavaScript基本类型和引用类型

    目录 介绍 背景 JavaScript数据类型 基本类型 基本类型的行为如何? 使用typeof运算符 语法类型 为什么null返回对象? 参考类型 创建对象 对象的行为如何? 销毁对象 基本类型和引 ...

  9. 基本类型和引用类型区别

    目录 1.基本类型包括: 2. 引用类型包括: 3.基本类型 3.1 基本类型的值是不可变的 3.2基本类型的比较是值的比较 3.2.1基本类型的数据类型相同时 3.2.2基本类型的数据类型不同时 3 ...

最新文章

  1. python使用fpdf2包和pdfrw报包新内容添加到已有的PDF页面上
  2. 2021年春季学期-信号与系统-第十三次作业参考答案-第十小题
  3. 利用位运算解决 N 皇后问题
  4. show open tables命令 mysql查看哪些表加锁了
  5. 腾讯视频电脑版下载_腾讯视频~如何用腾讯视频
  6. 必知必会!常用矩阵求导和重要的矩阵
  7. Exception in thread “main” java.lang.NoClassDefFoundError: com/google/common/base/Preconditions
  8. DOM Element对象 参考手册
  9. RFID Cooking with Mifare Classic
  10. 哈尔滨工程大学第十四届程序设计竞赛(同步赛)
  11. 《第一行代码》完结篇
  12. 免费股票数据API接口
  13. Redis使用入门(二)【Windows下Python客户端redis-py使用】
  14. 运动神经元有哪些特征 容易与哪些疾病混淆
  15. ajax 提交form表单,上传文件
  16. UE5 官方案例Lyra全特性详解 6.生成防御塔
  17. 娱乐圈艺人最经典的死亡-值得怀念
  18. 浙工商计算机调剂,2021考研调剂:浙江工商大学硕士研究生调剂信息公告
  19. 虚幻4-初识蓝图“设置操控器旋转“
  20. 使用kubeadm快速部署一套稳定的K8S集群

热门文章

  1. SpringBoot+MyBatisPlus实现插入关联多表数据的接口(企业质检管理举例)
  2. SpringBoot使用thymeleaf
  3. 谈谈java的并发容器、Queue
  4. java的socket读取一行就结束运行了?使用这种方法可以读取多行数据!
  5. 图书资料管理课程设计(附源码和连接)
  6. java ip加密如何访问_java代码中如何实现http访问
  7. 神策数据张涛:企业服务客户全生命周期运营三步曲:执行反馈
  8. SSM项目使用GoEasy 实现web消息推送服务
  9. Cisco无线AP上联口为trunk时无法注册故障处理
  10. 企业中数据中心管理者地位的逆袭