如何将 JS 变量的值(不是引用)传递给函数?

在 JavaScript 中,函数参数可以是传值或者传引用。传引用指的是传递变量的引用地址,这样函数内部对变量的修改会影响到外部变量的值。传值则是将变量的值复制一份用于函数内部操作,这样函数内部对变量值的修改不会影响到外部变量的值。

下面介绍如何将 JavaScript 变量的值(不是引用)传递给函数:

传递基本数据类型

在 JavaScript 中,基本数据类型包括字符串、数字、布尔型、null 和 undefined。这些数据类型的特点是它们的值是固定的,而且不能被修改。

因此,在将基本数据类型传递给函数时,函数会创建一个新的内存空间用于存储传递的值,并将其作为参数传递给函数。这样,函数内部对参数的修改不会影响到原始变量的值。

下面是一个示例代码:

-------- ------------------ -
  ----- - --
  ------------------ ------ ----------- ------- -- -- -
-

--- --- - --
-----------------
---------------- ------- ----------- ----- -- -- -

上述代码中,我们定义了 changeValue 函数,该函数接受一个参数 value。在函数内部,我们将 value 的值改为 2,并在控制台中打印出了修改后的值。

然后我们定义了一个变量 num 并将其赋值为 1。接着,我们调用 changeValue 函数,并将 num 作为参数传递给函数。最后,在控制台中分别输出原始变量 num 和函数内部进行修改后的 value 的值。

可以看到,虽然在函数内部将 value 的值改为 2,但是原始变量 num 的值仍然是 1,说明传递的是值而不是引用。

传递对象和数组

在 JavaScript 中,对象和数组是引用类型。这意味着当将对象或数组作为参数传递给函数时,实际上是将变量的引用地址传递给函数。因此,函数内部对对象或数组的修改会影响到原始变量的值。

下面是一个示例代码:

-------- -------------- -
  ----- - --
  ---------------- ------ ----------- ----- -- -- - -- -- -- - -
-

--- --- - - -- -- -- - --
---------------
---------------- ------- ----------- ----- -- -- - -- -- -- - -

上述代码中,我们定义了 changeObj 函数,该函数接受一个参数 obj。在函数内部,我们将 obj 中的 a 属性的值改为 2,并在控制台中打印出了修改后的对象。

然后我们定义了一个变量 obj 并将其赋值为 { a: 1, b: 1 }。接着,我们调用 changeObj 函数,并将 obj 作为参数传递给函数。最后,在控制台中分别输出原始变量 obj 和函数内部进行修改后的 obj 的值。

可以看到,虽然在函数内部将 obj.a 的值改为 2,但是原始变量 obj 的值也被修改为 { a: 2, b: 1 },说明传递的是引用而不是值。

如果我们想要在不影响原始变量的情况下修改对象或数组,可以使用深拷贝或浅拷贝。这里不再赘述,读者可以自行学习相关内容。

总结

本文介

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/10366


猜你喜欢

  • JavaScript库中的主要分号是做什么的?

    在 JavaScript 开发中,分号(;)是一种常见的标点符号。在某些情况下,程序员可能会省略这个分号,但这可能导致一些难以预料的错误。那么,在 JavaScript 库中,分号的作用是什么呢?这篇...

    7 年前
  • 选择移动Web HTML5框架

    在移动设备上开发Web应用程序,HTML5框架是一个非常有用的工具。它们提供了一系列的预构建组件,使Web开发人员能够更快地创建优秀的用户界面和交互体验。 为什么要使用HTML5框架? 使用HTML5...

    7 年前
  • 如何使用JavaScript删除CSS属性?

    在前端开发中,我们经常需要使用JavaScript来操作DOM元素和样式。有时候,我们需要删除一个DOM元素的某个CSS属性,这时就可以使用JavaScript来实现。

    7 年前
  • 从Web浏览器获取GPS位置

    在现代Web应用程序中,获取用户位置信息是一项非常有用的功能。例如,地图应用程序、社交媒体应用程序和旅游应用程序都需要知道用户当前的位置。本文将介绍如何使用JavaScript从Web浏览器中获取用户...

    7 年前
  • 设置没有值的属性

    在前端开发中,我们经常需要设置一些属性来控制元素的展示和行为。有时候,我们可能需要设置一个没有值的属性,例如 disabled 属性。这篇文章将详细介绍如何设置没有值的属性,并提供相关示例代码和指导意...

    7 年前
  • 如何让 setInterval 在标签被激活时生效?

    在前端开发中,我们经常使用 setInterval 函数来定时执行某些代码。但是,如果一个页面有多个标签页或者窗口,而当前标签页不处于激活状态,那么 setInterval 将会暂停执行,直到该标签页...

    7 年前
  • 我能用JavaScript获得当前运行的函数的名称吗?

    在 JavaScript 中,有时候我们需要获取当前正在执行的函数的名称。例如,当发生错误时,我们想要知道是哪个函数导致了错误,或者为了进行调试和性能优化等目的。 方法一:使用 arguments.c...

    7 年前
  • 在一个动作的创造者访问归来的状态?

    在前端开发中,我们经常需要在用户操作后更新 UI 状态。通常情况下,我们使用 React 或 Vue 这类的前端框架来组织代码和管理状态。当然,框架自带的状态管理工具也能够满足大多数场景的需求。

    7 年前
  • 返回“jQuery Ajax请求parsererror”

    在使用 jQuery 发送 Ajax 请求时,有时可能会遇到 parsererror 错误。这个错误通常表示服务器返回的数据无法被正确解析。 原因 出现 parsererror 错误的原因有很多,以下...

    7 年前
  • 自动调整jQuery对话框宽度为ajax加载内容宽度

    在前端开发中,我们经常需要使用弹出框来展示一些信息。而有时候,我们并不知道弹出框内部的内容大小。如果弹出框的宽度设置得过小,会导致内容溢出或者显示不全;反之则会浪费空间。

    7 年前
  • 使用JavaScript访问本地文件

    在前端开发中,有时候需要使用JavaScript来访问本地文件。这种需求可能来自于上传文件、读取本地文件等场景。在本文中,将介绍如何使用JavaScript实现这些功能。

    7 年前
  • 如何使用JavaScript检测屏幕分辨率?

    屏幕分辨率是指屏幕上像素的数量,通常用宽度和高度来表示。在前端开发中,了解用户的屏幕分辨率可以帮助我们更好地进行页面布局,提高用户体验。本文将演示如何使用JavaScript来检测屏幕分辨率,并提供相...

    7 年前
  • 为 HTMLCollection 元素循环

    在前端开发中,我们经常需要处理多个 DOM 元素,例如获取所有某个标签的元素列表。此时,我们可以使用 document.getElementsByTagName、document.getElement...

    7 年前
  • 使用jQuery定时器调用JavaScript函数

    前端开发中,经常需要在一定时间间隔内执行某些操作。这时就可以使用 jQuery 提供的定时器方法 setInterval() 和 setTimeout() 来实现。

    7 年前
  • 从JavaScript数组中删除重复的对象

    在前端开发过程中,经常需要对数据进行去重操作。本文将介绍如何使用JavaScript语言中的数组方法来删除重复的对象,并提供详细的示例代码和解释。 方法一:使用Set对象 ES6中引入了Set对象,可...

    7 年前
  • 如何使用链接调用JavaScript?

    在前端开发中,我们经常需要通过链接来触发JavaScript函数,例如实现点击按钮弹出模态框、跳转页面等功能。本文将介绍如何使用链接调用JavaScript,并提供示例代码,帮助读者深入了解并掌握该技...

    7 年前
  • jQuery:如何更改文件名称中的.ready()?

    在前端开发中,jQuery 是一个常见的 JavaScript 库,它提供了丰富的 API 和简化 DOM 操作的方法,使得开发变得更加便捷。其中,$(document).ready() 函数是 jQ...

    7 年前
  • 使用JavaScript显示/隐藏“div”

    Peter MortensenJake Ols提出了一个问题:Show/hide 'div' using JavaScript,或许与您遇到的问题类似。 回答者Josh Crozier给出了该问题的处...

    7 年前
  • 函数来清除表单的所有字段

    在前端开发中,表单是一个非常重要的组件。当我们需要清空表单中的所有字段时,JavaScript提供了一种简单而有效的方法:编写一个函数来实现这个功能。 为什么需要清除表单字段? 清除表单字段的原因可能...

    7 年前
  • 当一个模糊的事件发生时,我怎样才能找出哪一个元素焦点被转到了?

    在前端开发中,经常会遇到需要知道当前焦点在哪个元素上的情况。例如,当用户通过 tab 键切换焦点时,我们可能需要触发相应的交互操作。但是,有时候我们可能无法确定哪个元素具有焦点,尤其是在复杂的页面结构...

    7 年前

相关推荐

    暂无文章