【发布时间】:2020-01-17 13:18:06
【问题描述】:
有没有办法获取由 var、let、const 声明的变量的名称?还是只有类和函数变量才有可能?
【问题讨论】:
-
不,这是不可能的。变量只是值的标签 - 一旦您查看一个值,就无法知道它来自哪个绑定。
-
这能回答你的问题吗? get variable name into string in javascript
标签: javascript
有没有办法获取由 var、let、const 声明的变量的名称?还是只有类和函数变量才有可能?
【问题讨论】:
标签: javascript
我认为这是唯一的方法
let a = "A";
const b ="B";
var c = "C";
const scr = document.currentScript.innerText;
console.log(scr.match(/(var|let|const)\s+\w+/gm))
【讨论】:
let foo = "ba" + "r" 将不起作用。如果值是硬编码的,则只能使用它。即便如此,还是有一个问题 - let x = 42; let y = 42; findBindingNameOf(x) //??? 重复值无法可靠地查找 - 您会发现有 一些 变量设置为 42 但不是 哪个 被传入。
findBindingNameOf(x) 的事情,并能够从中得到"x"。但是你做了findAllBindings()(基本上)返回所有变量名。我可以看到两者都是有效的解释,所以它只是强调了这个问题是如何不清楚的。
let a, b, c。这使得任务实现起来更加复杂(例如,如果它是 let a, b = 2, c 或者它们甚至被换行符分隔怎么办?)甚至更像是一个应该退后一步并弄清楚之前需要这样做的为什么继续进行,因为可能有更好的方法来解决查找变量可以解决的任何问题。