javascript - javascript 函数范围如何与参数一起使用?
问题描述
下面的第二个 console.log 不返回 2 是什么?是不是因为在我分配的函数范围内thing = thing + 1
,分配的thing
只是另一个变量?它不再指的thing
是传入的原始参数?
function change(thing) {
thing = thing + 1;
return thing;
}
let a = 1
console.log(change(a)) //2
console.log(a) //1
解决方案
这是因为在 javascript 中,当您将原始类型传递给“字符串”或“数字”之类的函数时,只会传递一个副本,如果它是一个对象或数组,那么值会改变,因为这些类型是通过引用传递的,例如:
function change(thing) {
thing.value = thing.value + 1;
return thing;
}
let a = {value: 1};
console.log(change(a))
console.log(a)
推荐阅读
- javascript - 使用 PerformanceEntry API 获取单个值
- python - 存在同名同级目录时导入 Python 模块
- c# - 使用 MVC 从 WooCommerce WebHook 读取/接收数据
- c++ - 在 IT 模式下查询 LSI 9211-8i HBA 中的磁盘的 API?
- excel - 循环遍历 50,000+ 行并复制数据,直到第一列中的值发生变化
- python - 为数据框选择一系列相邻列
- c++ - C++:重载 fmt lib 中的内置(双)格式化程序
- terraform - 基于文件夹路径和文件夹内json的策略创建
- recursion - 如何在 APL 中进行相互递归?
- azure - Azure AD Graph API 无法可靠地告诉我来宾用户是否已存在