|
|
1
74
不,“in scope”变量由“scope chain”确定,不能通过编程方式访问。 有关详细信息(相当多),请查看ecmascript(javascript)规范。 Here's a link 到您可以下载规范规范规范(PDF)的官方页面,以及 here's one 官方的,可链接的HTML版本。 根据您对Camsoft的评论进行更新
变量
在范围内
因为事件函数由定义事件函数的位置决定,而不是由它们如何调用。
但是
,您可以通过
因此,除了您定义函数的位置所导致的范围之外,您还可以通过执行以下操作找到其他可用的方法:
(您可以在此基础上展开以获取更多有用的信息。) 不过,我可能会使用像chrome的dev工具这样的调试器(即使您通常不使用chrome进行开发),或者 Firebug (即使您通常不使用火狐进行开发),或者在Opera上使用蜻蜓,或者在IE上使用“F12开发工具”,并阅读它们提供给您的任何javascript文件。打他们的头找合适的医生。-) |
|
|
2
76
尽管每个人都回答 不 我知道“不”是正确的答案,但是如果你真的需要 局部变量 对于一个函数,有一个限制的方法。 考虑这个函数:
您可以将函数转换为字符串:
您将得到作为字符串的函数源
现在您可以使用类似于 esprima 解析函数代码并查找局部变量声明。
查找对象时使用:
结果(我把
我已经在chrome、firefox和node中测试过这个。 但是 问题 使用这个方法,您只需要在函数本身中定义变量。例如,对于这一个:
您只需访问 X 而不是 Y . 但是你仍然可以使用 呼叫者 (arguments.callee.caller.caller.caller)在循环中查找调用函数的局部变量。如果您有所有本地变量名,那么 范围变量 . 通过变量名,您可以使用简单的eval访问值。 |
|
|
3
31
是和否。几乎在所有情况下都是“不”。是的,”但是只有在有限的方式下,如果你想检查全局范围的话。举个例子:
哪些输出, 在150多件事中 ,如下:
所以可以列出当前作用域中的一些变量,但是 它不可靠、简洁、高效或不易接近。 一个更好的问题是 为什么要知道范围中有哪些变量? |
|
|
4
16
|
|
|
5
15
在EcmaScript 6中,通过将代码包装在
代理声明拥有内部引用的所有标识符
受到启发 this answer 通过 Bergi . |
|
6
7
大家都注意到了:你不能。 但您可以创建一个对象并将您声明的每个var分配给该对象。 这样您就可以轻松地查看vars:
|
|
|
7
7
在特定范围内访问var的最简单方法
注: 你想对未缩小的JS做这个。 显示所有非私有变量的最简单方法
现在,您将看到一个对象树,您可以用所有声明的对象展开它。 |
|
|
8
3
如果只想手动检查变量以帮助调试,只需启动调试器:
直接进入浏览器控制台。 |
|
|
9
-3
好吧,说真的,你可以这样做,用1)在整个代码库上运行esprima.parse,在树上遍历名为“identifier”的东西,并存储它们的“name”得到什么。但是,您将错过正在创建的变量,如窗口[“file”+i]=blah中所示,请参见4。 |
|
|
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 1 年前 |
|
|
Alex · 在轻量级中同时解构和不解构变量 1 年前 |
|
|
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 1 年前 |
|
|
bairog · 从按属性筛选的对象数组字典中创建值数组 1 年前 |
|
|
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 1 年前 |