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日

相关文章

  • JS过滤url参数特殊字符的实现方法

    需求分析 首先,我们需要明确的是,过滤 URL 参数中的特殊字符完全可以通过正则表达式来实现。在 JavaScript 中,我们可以使用 RegExp 对象来进行正则表达式的匹配。因此,我们需要编写能够对 URL 参数进行正则匹配的函数并使用该函数过滤掉所有特殊字符。 实现步骤 (1)定义一个过滤 URL 参数特殊字符的函数,例如 cleanURLParam…

    JavaScript 2023年5月19日
    00
  • 详解angularjs获取元素以及angular.element()用法

    首先在讲解“详解angularjs获取元素以及angular.element()用法”的完整攻略前,我们需要了解一些前置知识。 前置知识 1. AngularJS 框架 AngularJS是一款由Google主导开发的前端框架。AngularJS的主要优点有: MVVM模式,分离了视图和逻辑,使代码更易维护。 具有依赖注入功能,这实现了组件之间的松散耦合,增…

    JavaScript 2023年6月10日
    00
  • JS 中Json字符串+Cookie+localstorage

    以下是对于“JS中JSON字符串+Cookie+localStorage”的完整攻略: 1. 什么是JSON字符串? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言的子集,由Douglas Crockford在2001年首次提出。JSON字符串是指符合JSON格式规范的字符串。 JS…

    JavaScript 2023年5月27日
    00
  • js获得当前时区夏令时发生和终止的时间代码

    要获取当前时区夏令时发生和终止的时间,可以使用 JavaScript 的 Date 对象的方法。 获取夏令时开始和结束的时间 要获取夏令时的开始和结束时间,可以使用以下代码: // 获取当前时间的时区偏移量 var offset = new Date().getTimezoneOffset(); // 构建夏令时开始和结束的日期对象 var dstStart…

    JavaScript 2023年5月27日
    00
  • C# DropDownList中点击打开新窗口的方法

    下面是“C# DropDownList中点击打开新窗口的方法”的完整攻略。 1. 确定目标页面和传递参数 首先需要确定要打开的目标页面以及要传递给目标页面的参数,例如,我们要打开的目标页面为“TargetPage.aspx”,要传递的参数为“id=123”。 2. 将DropDownList设置为自动PostBack模式 为了使DropDownList选择项…

    JavaScript 2023年6月11日
    00
  • js实现无刷新监听URL的变化示例代码详解

    首先,我们需要明确什么是URL的变化。以单页面应用(SPA)为例,当用户在页面内部进行操作时,可能会通过JavaScript动态更新URL的参数或片段,实现页面内容的变化。但是,这种变化不会像页面刷新那样引起整个页面的重新加载。 如果我们想要对URL的变化进行监听,有两种方法可以选择。 方法一:使用window.onhashchange事件 在HTML5规范…

    JavaScript 2023年6月11日
    00
  • JS文件上传神器bootstrap fileinput详解

    JS文件上传神器bootstrap fileinput详解 1. 简介 bootstrap fileinput是一个基于Bootstrap框架的文件上传插件,具有丰富的功能和完善的文档。使用该插件,可以实现包括文件选择、预览、上传、删除等多种操作。 2. 安装 安装bootstrap fileinput的步骤如下: 引入相关CSS文件、JS文件和Bootst…

    JavaScript 2023年5月27日
    00
  • js 函数式编程学习笔记

    下面是学习 js 函数式编程的完整攻略: 1. 学习函数式编程基础 函数式编程是一种编程范式,需要掌握一些基础概念和语法,例如: 纯函数:不会修改外部状态,返回结果只依赖于输入参数 函数柯里化:把接受多个参数的函数变换成接受一个单一参数的函数 高阶函数:函数可以作为参数或返回值使用 可以通过阅读函数式编程相关的书籍或文章来学习这些基础知识。推荐的书籍有《Ja…

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