javascript - Javascript对变量的不安全引用
问题描述
下面的代码不能按我想要的方式工作。我认为这个问题可能与不安全的引用有关。
var values = { "key1": "val1", "key2": "val2" };
const properties = {};
for (key in values) {
properties[key] = {
get: () => values[key],
set: (val) => {
values[key] = val
}
};
}
console.log(properties["key1"].get()); // Result should be val1 but it prints val2
如何根据需要运行上述代码?
解决方案
var values = { "key1": "val1", "key2": "val2" };
const properties = {};
for (const key in values) {
properties[key] = {
get: () => values[key],
set: (val) => {
values[key] = val
}
};
}
console.log(properties["key1"].get());
正如评论中所说的 Jaromanda X,该变量key
作为全局变量启动,并且全局变量保存对象的最后一个条目,因此尝试将其key
作为 for 循环的变量,因此,对于 for 循环的每次迭代,它将 的值保存key
为局部变量,请检查上面的代码片段
推荐阅读
- vue.js - 动态 Vue 实例是一个好习惯吗?
- reactjs - TypeError:无法读取未定义笑话的属性“forEach”
- c++ - 无法运行从我的 Google 云端硬盘加载的解决方案
- system.commandline - 有没有办法通过 System.CommandLine 的 —help 选项获取帮助文本输出?
- reactjs - React render button 'x' of times
- python - 窗口化最小-最大变换
- python - 转换字典中的列表
- r - R forEach 为列表列表和结构输出列表分配名称
- java - 对 Spring 端点的 Java 请求
- npm - npm v7 的“预卸载”生命周期脚本的替代方案