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

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日

相关文章

  • javascript实现复选框选中属性

    下面是详细讲解JavaScript实现复选框选中属性的完整攻略: 一、需求描述 封装一个JavaScript函数,实现以下功能: 当一个复选框被选中时,将其value值添加到一个数组中;当复选框取消选中时,将其value值从数组中删除。 二、实现思路 给所有复选框绑定一个绑定事件 在事件中获取该复选框元素的value值和状态(选中/未选中) 当状态为选中时,…

    JavaScript 2023年6月10日
    00
  • 全面了解JavaScript对象进阶

    全面了解JavaScript对象进阶 了解对象介绍 JavaScript 是通过对象来组织数据和功能的,可以认为在 JavaScript 中我们所有的一切都是对象,也就是说你定义的任何变量或函数都是对象。对象可以由两种方法创建:1. 直接量2. 构造函数 对象直接量 对象直接量是由若干名/值对组成的映射表,用大括号括起来。然后在每个名/值对之间用逗号分隔即可…

    JavaScript 2023年5月18日
    00
  • Javascript如何实现对象扁平化实例详解

    Javascript中有时我们需要将复杂的嵌套对象进行“扁平化”,也就是将它们转换为一维对象。下面我将详细讲解如何实现对象扁平化。 什么是对象扁平化 对象扁平化指将一个多层嵌套的对象转换成一个一维对象。比如下面这个复杂的嵌套对象: { name: ‘Jack’, address: { province: ‘Shanghai’, city: { distric…

    JavaScript 2023年5月27日
    00
  • Window.Open打开窗体和if嵌套代码

    下面我就来详细讲解一下“Window.Open打开窗体和if嵌套代码”的完整攻略。 Window.Open打开窗体 Window.Open 是一种在浏览器中打开新窗口的方法。它有几个参数可以设置:新窗口的 URL 地址、窗口大小和位置、是否允许调整窗口大小、是否允许工具栏和状态栏等。 下面是一个示例,展示如何通过 Window.Open 打开一个新窗口: &…

    JavaScript 2023年6月11日
    00
  • 如何计算Web动画帧率FPS

    如何计算Web动画帧率FPS 在Web动画的开发、优化中,计算帧率FPS是非常重要的一项任务。本文将详细讲解如何计算Web动画帧率FPS。 1.浏览器中的时间线 在Web动画的开发中,我们需要了解浏览器的时间线。浏览器会不断重绘页面,这些重绘是按照一定的帧率进行的。在浏览器中,每秒钟重绘的次数就是帧率FPS。帧率通常是60FPS,但是帧率还会根据硬件性能的不…

    JavaScript 2023年6月11日
    00
  • JavaScript实现数值自动增加动画

    JavaScript实现数值自动增加动画 简介 数值自动增加动画是Web开发中经常使用的一种交互效果,可以应用在比如数字滚动、统计数据等场景。本文将介绍使用JavaScript实现数值自动增加动画的完整攻略,包括实现原理、具体实现步骤和示例说明。 实现原理 实现数值自动增加动画的基本原理是利用定时器setInterval()循环计算数值,并更新数值显示。具体…

    JavaScript 2023年6月10日
    00
  • vue element-ui使用required进行表单校验时自定义提示语问题

    在Vue中使用Element-UI进行表单校验时,可以使用required属性来进行必填校验。然而,在默认情况下,当该表单项未填写时,Element-UI会输出“该字段不能为空”的默认提示语,而有时候我们希望自定义提示语。下面是自定义提示语的攻略: 使用label属性自定义提示语 如果我们不想使用默认提示语,可以使用label属性来自定义提示语。在使用lab…

    JavaScript 2023年6月10日
    00
  • 通过实例解析json与jsonp原理及使用方法

    通过实例解析JSON与JSONP原理及使用方法 什么是JSON JSON(JavaScript Object Notation)即 JavaScript 对象表示法,是一种轻量级的数据交换格式,易于阅读和编写。JSON采用基础元素(值value,列表list/array,对象object)来描述数据对象,因此可以表示复杂的数据结构。 JSON的基本语法 在J…

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