
在javascript中,当我们将变量(如var1、var2、var3)放入一个数组并进行迭代时,循环变量(例如for (let variable of [var1, var2, var3])中的variable)仅持有这些变量的值。javascript的运行时特性决定了它不会保留变量在内存中的“原始名称”信息,一旦值被赋给另一个变量或作为数组元素存储,其原始变量名就丢失了。
例如,以下代码尝试获取原始变量名是无效的:
let var1 = 10;
let var2 = 20;
let var3 = 30;
for (let variable of [var1, var2, var3]) {
console.log("Value: " + variable);
// 此时 'variable' 的值是 10, 20, 30,但无法直接获取 "var1", "var2", "var3"
// 尝试使用 Object.keys({variable})[0] 只会返回 "variable"
}在这种情况下,Object.keys({variable})[0]只会返回字符串"variable",因为在每次迭代中,传入{variable}的对象字面量中的键就是variable。这并不能帮助我们找回最初定义变量时的名称。
要解决这个问题,我们需要在迭代之前,显式地将变量的名称和值关联起来。最直接有效的方法是创建一个JavaScript对象,其中对象的键就是我们想要的变量名称,而值则是对应的变量内容。然后,我们可以使用Object.entries()方法来迭代这个对象的键值对。
Object.entries()方法返回一个给定对象自身可枚举字符串键属性的[key, value]对的数组。通过迭代这个数组,我们就能同时获取到变量的名称(键)和它的值。
立即学习“Java免费学习笔记(深入)”;
下面是具体的实现步骤和示例代码:
// 步骤1: 定义需要处理的变量
let var1 = 100;
let var2 = "Hello";
let var3 = { id: 3, status: "active" };
// 步骤2: 将变量封装到对象中,属性名即为原始变量名
// 使用ES6的属性值简写语法,如 var1 等同于 var1: var1
const variablesMap = {
var1,
var2,
var3
};
// 步骤3 & 4: 使用 Object.entries() 迭代,并通过解构赋值获取名称和值
console.log("--- 迭代变量名称和值 ---");
Object.entries(variablesMap).forEach(([name, value]) => {
console.log("Name: " + name);
console.log("Value: " + value);
});
/*
预期输出:
--- 迭代变量名称和值 ---
Name: var1
Value: 100
Name: var2
Value: Hello
Name: var3
Value: { id: 3, status: 'active' }
*/在JavaScript中,直接从循环变量获取其原始名称是无法实现的。然而,通过将需要迭代的变量封装到一个对象中,并利用Object.entries()方法,我们可以有效地在迭代过程中同时获取变量的名称和值。这种策略为处理需要名称-值对的场景提供了一个清晰、专业且易于理解的解决方案。
以上就是JavaScript:获取循环中变量的原始名称的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号