Javascript函数不修改数组(参考?)

2023-12-10

如果 JavaScript 将函数参数作为原始对象的引用传递,为什么我不能使用这个简单的函数修改原始数组?

var array1 = ["one"];

function change(array) {
   var array2 = ["222"];
   array = array2;
}

change(array1);

console.log(array1); // this prints ["one"] instead of ["222"]

为什么有时对象似乎作为引用传递,而在这种情况下它作为副本传递?


为什么有时对象似乎作为引用传递,在这种情况下 它作为副本传递?

它不是作为数组的副本传递,而是作为数组引用的副本传递。仍然只有一个数组,您可以使用该引用更改函数中的数组:

var array1 = ["one"];

function change(array) {
   array[0] = "222";
}

change(array1);

console.log(array1); // this prints ["222"]

您不能做的是在函数中用不同的数组替换该数组。如果将一个新数组分配给参数,那么它将指向新数组,但变量array1仍然不变并指向原始数组。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript函数不修改数组(参考?) 的相关文章

随机推荐

  • 有没有办法使用CSS使用文本作为背景?

    我想使用动态文本作为标签中某些元素的背景 因此 我可以使用图像 动态文本 如何仅使用 CSS 或 JavaScript 来做到这一点 SVG 文本背景图像 body background image url data image svg x
  • 在匹配的正则表达式的一部分上分割字符串(python)

    假设我有一个字符串 ad gt ad gt ad gt gt ad 我想就此分开 gt 不是 gt gt 字符 刚刚拿起正则表达式 想知道是否有一种方法 特殊字符 可以分割匹配表达式的特定部分 而不是分割整个匹配表达式 例如正则表达式可以是
  • 升级到 G++ 4.8 - exception_ptr.h 不支持异常传播

    我正在尝试使用 g 4 8 重新编译一个巨大的遗留应用程序 以便调试glibc detected memory corruption问题 使用 AddressSanitizer 之前我们使用的是 g 4 4 7 但是 编译失败并显示 opt
  • 如何构建 IEnumerable.Contains() 表达式?

    我目前第一次使用 ASP 动态数据 并尝试构建一个过滤器 我们的用户需要根据项目是否是所选父项的子项 我们的项目可以有多个父项 来定位列表中的项目 所讨论的项目是 Segment 每个 Segment 都有一个名为 RouteIds 的属性
  • MySQL 相当于 MS SQL 交叉应用

    如果您习惯了 MS SQL 交叉应用 那么您可能想知道如何在 MySQL 中完成同样的事情 我发现反问句并认为直接的问题可能会帮助任何搜索如何将此功能从 MS SQL 迁移到 MySQL 的人 在此示例中 交叉应用允许您修改字段并在同一查询
  • 正则表达式批量搜索替换

    我想在 Windows 批处理中使用正则表达式模式对一组文件进行搜索 替换 它会是这样的 if the regex matches a line matches then replace it with a new line 我还需要在正则
  • 如何将 SVG 中的路径数据变形为另一个路径数据?

    我试图弄清楚为什么它不会将此路径数据变形为另一个路径数据 我需要使其看起来像真正的动画 这是我的 SMIL 代码
  • 导入 csv 时,Pandas 无法识别一列浮点数

    我正在尝试将国际货币基金组织的统计数据读入 pandas 数据框 import pandas as pd df pd read table http www imf org external pubs ft weo 2013 02 weod
  • php mail() 函数导致 404 文件未找到页面

    我有一个带有 html 表单的简单 php 页面 它的设置是让您填写表格并自动向我的电子邮件发送电子邮件 我没有收到任何电子邮件 并且页面重定向到 找不到文件 404 错误 而不是发生这种情况 这是 PHP
  • Knockout js:如何一次获取所有属性的通知

    假设我有一个包含 100 个 props 的 ViewModel 目前 我需要一个处理程序 如果任何道具发生变化 就会调用该处理程序 当然 我可以为每个属性编写 100 subscribe 但似乎有更好的方法 就像在 C 中一样 您可以绑定
  • 在 Windows 上为 Python 2.7 构建 lxml

    我正在尝试在 Windows 64 位计算机上为 Python 2 7 构建 lxml 我找不到 Python 2 7 版本的 lxml Egg 所以我从源头编译它 我正在按照该网站上的说明进行操作 http lxml de build h
  • 使用 Selenium 通过 MacOS 窗口上传图像

    Set up 我正在使用 Python 3 x 和 Selenium 在网上商店的后端工作 我需要从我的电脑上传产品图片到平台后端 Problem 使用 Selenium 可以单击图像上传按钮 但是单击会弹出 MacOS 文件选择器 Sel
  • Python,无法将 input() 转换为 int()

    我正在尝试使用以下代码将 input 数据转换为 int prompt text Enter a number try user num int input prompt text except ValueError print Error
  • 输出显示在 Jupyter Notebook 中,但未显示在 PyCharm 中

    我看过类似的帖子 但没有看到任何真正解决 Jupyter Notebook 和 PyCharm 之间输出差异的回复 一个例子是这样的 from datetime import datetime now datetime now now Ou
  • 为什么 text-decoration: none 在 p 中不起作用?

    我有以下 HTML 和 CSS 片段 我想要 不要强调 但确实如此 我究竟做错了什么 p color red text decoration underline font size 1 2em span none text decorati
  • 使用 Parcelable 在 Intent 中传递数组

    我想在活动之间发送一系列对象 我想使用 Parcelable 接口并以意图发送数据 但是我不断收到错误 我已经被困了2天了 以下是有关我的问题的一些详细信息 Class A private ProjetUI mProjects privat
  • 如何从数据表填充列表视图

    我有一个ListView and a DataTable我想知道如何填充ListView来自DataTable 这是我的代码 DataTable dt new DataTable SqlConnection conn new SqlConn
  • 尝试在 Android 1.5 上使用 Base64 时出现“IllegalArgumentException: bad base-64”[已关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 I get java lang IllegalArgumentException bad
  • WPF ItemsControl ItemTemplate 边框与 GroupStyle

    这是我第一次发图片 所以希望效果很好 一张图片抵一千字 我不想打一千字 但是 下图是我想要实现的目标 我有一个需要按属性 组 分组的对象集合 我正在使用绑定到为我进行分组的数据源的 CollectionViewSource 我正在使用 It
  • Javascript函数不修改数组(参考?)

    如果 JavaScript 将函数参数作为原始对象的引用传递 为什么我不能使用这个简单的函数修改原始数组 var array1 one function change array var array2 222 array array2 ch