JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享

yizhihongxing

JavaScript 中函数参数的传递方式既有值传递(by value),也有引用传递(by reference)。

值传递

函数参数以基本数据类型(如Number、String、Boolean等)为例,是以值传递的方式进行的。值传递表示将实际传递给函数的参数值(即实参)复制一份,传递给函数中对应的参数(即形参),函数中对参数值的修改不会影响到实参的值

下面的示例说明了这一点:

function valuePass(a) {
  a = 2;
  console.log(a); // 输出2
}

let b = 1;
valuePass(b);
console.log(b); // 输出1

在这个例子中,变量 b 的值为 1,被作为参数传递给函数 valuePass 中的形参 a。在函数内部将 a 的值改为 2 后,输出的值为 2。但是当函数执行完成后,变量 b 的值仍然为 1,说明函数 valuePass 对形参 a 的修改并没有影响到实参 b 的值。

引用传递

函数参数以对象(Object)为例,则是通过引用传递的方式进行的。引用传递表示传递的是实参的引用(即实参本身在内存中的地址),函数中对参数引用值的修改会直接影响到实参的值。

下面的示例说明了这一点:

function referencePass(obj) {
  obj.prop = 'new value';
  console.log(obj.prop); // 输出new value
}

let obj = {};
obj.prop = 'old value';
referencePass(obj);
console.log(obj.prop); // 输出new value

在这个示例中,变量 obj 存储了一个包含属性 prop 的空对象,并被作为参数传递给函数 referencePass 中的形参 obj。在函数内部修改了 obj.prop 的值为 'new value',并通过 console.log 输出了修改后的值。而在函数执行完成后,输出变量 obj.prop 的值也是 'new value',说明函数 referencePass 对形参 obj 的修改直接影响到了实参 obj.prop 的值。

需要注意的是,引用传递存在风险,因为在函数内部可能会意外或者无意间地修改实参的值,导致不可预测的结果产生,因此建议在使用时慎重考虑。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码

    获取本月第几周、本月共几周、本月有多少天 首先,我们可以使用Date对象来获取当天的日期。通过获取当前日期的月份和年份,可以计算出本月有多少天。同时,我们可以使用getDay()方法来获取当前日期是星期几,然后在计算出本月的第几周以及本月共几周。 下面是获取本月第几周、本月共几周和本月有多少天的示例代码: // 获取当前日期 const date = new…

    JavaScript 2023年6月10日
    00
  • cesium-2-entity

    1、四层结构 viewer –> datasources(DataSourceCollection类型) –> datasource –> entities(EntityCollection类型) –> entity 需要学习的方向是:只需要注意每个层与层之间的关系和entity实例如何创建即可 2、DataSourceCol…

    JavaScript 2023年4月27日
    00
  • 如何使用Bootstrap创建表单

    当使用Bootstrap创建表单时,可以利用Bootstrap提供的现成的组件和样式来快速搭建一个美观、易用、响应式的表单。 创建Bootstrap表单的步骤 引入Bootstrap的CSS和JS库文件。可以直接从官网下载(http://getbootstrap.com/),或者通过CDN引入。 <!– Bootstrap CSS –> &l…

    JavaScript 2023年6月10日
    00
  • Vue3之使用js实现动画示例解析

    下面我会详细讲解使用js实现动画的攻略,让你了解Vue3中使用js实现动画的方式。 Vue3之使用js实现动画示例解析 前言 Vue3在动画方面有了很大的改进,现在已经内置支持了Transition和Animation组件。相信这也是很多人会选择了Vue3的原因之一。本篇文章主要介绍如何使用js实现动画效果,有一个基本的了解后,再去了解Vue3内置的Tran…

    JavaScript 2023年6月10日
    00
  • JavaScript学习笔记之ES6数组方法

    JavaScript学习笔记之ES6数组方法 JavaScript是一种高级编程语言,广泛应用于Web开发中,也是学习编程的一个重要工具。ES6是JavaScript的第六个版本,引入了许多新特性,其中包括一组有用的数组方法,能够大大简化数据集合的处理。本篇文章将深入介绍ES6数组方法,为读者提供完整的学习攻略。 一、ES6数组方法介绍 ES6引入的数组方法…

    JavaScript 2023年5月27日
    00
  • javascript数组使用调用方法汇总

    JavaScript数组使用调用方法汇总 在JavaScript中,数组是一个非常常用的数据结构类型,拥有丰富的调用方法。这篇文章将为大家总结汇总了JavaScript数组使用调用方法,方便大家开发时进行参考使用。 创建一个数组 // 创建一个空数组 let arr = []; // 使用Array构造函数创建 let arr = new Array(); …

    JavaScript 2023年5月27日
    00
  • 一篇文章弄懂js中的typeof用法

    一篇文章弄懂 JS 中的 typeof 用法 typeof 是 JavaScript 中的一个关键字,用于确定一个值的数据类型。如今,在 JavaScript 中,由于一些语言习惯的原因,被称为“类型”或“类型操作符”。了解 typeof 的使用方法对于学习和理解 JavaScript 语言非常重要。 使用 typeof 的基本语法 语法:typeof op…

    JavaScript 2023年6月11日
    00
  • Javascript 编码约定(编码规范)

    为了让Javascript代码具备可读性以及易于维护,编写Javascript代码时需要遵循一定的编码约定,也被称为编码规范。接下来,本文将介绍Javascript编码规范的完整攻略。 确定代码的缩进方式 在编写Javascript代码时,我们需要使用缩进来表示不同代码块之间的层次结构,一般约定每个缩进级别使用2或4个空格。其中空格的数量应该保持统一,不要混…

    JavaScript 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部