javascript - 看不懂这两个词的意思
问题描述
let spaceship = {
homePlanet : 'Earth',
color : 'red'
};
let tryReassignment = obj => {
obj = {
identified : false,
'transport type' : 'flying'
}
console.log(obj) // Prints {'identified': false, 'transport type': 'flying'}
};
tryReassignment(spaceship) // The attempt at reassignment does not work.
spaceship // Still returns {homePlanet : 'Earth', color : 'red'};
spaceship = {
identified : false,
'transport type': 'flying'
}; // Regular reassignment still works.
让我们看看代码示例中发生了什么:
我们用 let 声明了这个宇宙飞船对象。这使我们可以毫无问题地将其重新分配给具有已识别和“传输类型”属性的新对象。当我们使用旨在重新分配传递给它的对象的函数尝试相同的事情时,重新分配没有坚持(即使在对象上调用 console.log() 产生了预期的结果)。当我们将 spaceship 传递给该函数时,obj 成为对 spaceship 对象的内存位置的引用,而不是对 spaceship 变量的引用。这是因为 tryReassignment() 函数的 obj 参数本身就是一个变量。 tryReassignment() 的主体根本不知道 spaceship 变量! 当我们在 tryReassignment() 的主体中进行重新赋值时,obj 变量指向了对象 {'identified' : false, 'transport type' : 'flying'} 的内存位置,而 spaceship 变量完全没有改变从其早期的价值。
解决方案
推荐阅读
- spacy - 如何计算 Spacy 模块中的准确度?
- python - 使用 Python PDFMiner 将多个 PDF 提取到文本文件的循环脚本
- curl - Wekan API delete_user 返回成功但用户未删除
- css - Firefox:CSS 纵横比在 Firefox 中不起作用,但在 Chrome 中起作用
- jenkins - 扩展选择参数中使用的 Json 模式没有添加和删除按钮,但相同的模式在 Json 编辑器中显示按钮
- pointers - 我在写入多维数组时遇到访问冲突
- python - 非结构化数据的快速多维插值
- java - 使用 OkHttp 实现相互认证时如何忽略服务器证书?
- javascript - 获取/登录 302 5.603ms
- java - 为什么 Gson 在读取有效 JSON 文件的循环上进行一些迭代后返回 null