【问题标题】:Is there a way to get name of variable declared by var, let, const?有没有办法获取由 var、let、const 声明的变量的名称?
【发布时间】:2020-01-17 13:18:06
【问题描述】:

有没有办法获取由 var、let、const 声明的变量的名称?还是只有类和函数变量才有可能?

【问题讨论】:

标签: javascript


【解决方案1】:

我认为这是唯一的方法

let a = "A";
const b ="B";
var c = "C";
const scr = document.currentScript.innerText;
console.log(scr.match(/(var|let|const)\s+\w+/gm))

【讨论】:

  • 这(解析 JS 以查找与值关联的内容)确实是唯一的方法......但它不起作用。不是一般的。例如let foo = "ba" + "r" 将不起作用。如果值是硬编码的,则只能使用它。即便如此,还是有一个问题 - let x = 42; let y = 42; findBindingNameOf(x) //??? 重复值无法可靠地查找 - 您会发现有 一些 变量设置为 42 但不是 哪个 被传入。
  • 我可以找到 foo、x 和 y——这就是我用这段代码尝试的全部。缺乏用例使得很难找到他们想要的东西
  • 哦,我不会以任何方式责怪你或代码。这个问题肯定可以使用更多细节。事实上,我怀疑这是一个 XY 问题。无论如何,我只想提一下限制。虽然,现在我看了一下 - 我们似乎对这个问题有不同的解读。我认为 OP 想做类似findBindingNameOf(x) 的事情,并能够从中得到"x"。但是你做了findAllBindings()(基本上)返回所有变量名。我可以看到两者都是有效的解释,所以它只是强调了这个问题是如何不清楚的。
  • 哦,在“查找所有变量”的情况下,你需要用逗号分隔,因为一个变量声明可以包含多个let a, b, c。这使得任务实现起来更加复杂(例如,如果它是 let a, b = 2, c 或者它们甚至被换行符分隔怎么办?)甚至更像是一个应该退后一步并弄清楚之前需要这样做的为什么继续进行,因为可能有更好的方法来解决查找变量可以解决的任何问题。
猜你喜欢
  • 2013-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 2021-04-24
相关资源
最近更新 更多