一种常见的JavaScript模式是:
自执行或即时执行的匿名函数创建了一个作用域,防止全局作用域的污染,理论上还可以防止任何人从外部脚本、浏览器控制台等获取对函数对象或内部定义内容的引用。这就是想法。
然而,由于JavaScript是一种具有反射等特性的动态语言,我想知道是否有任何方法——无论多么巧妙(但不编辑任何现有代码)——可以从JavaScript代码中获取未被故意公开的本地变量的引用。
原因:纯好奇心/破坏事物。
补充说明:我正在研究的东西包括Function.caller和事件侦听器,基本上是IIFE内部已知调用/挂钩的任何项目,但我无法组合完整的包。
(function() {
var localScopedValue = "foobar";
// code... functions...
}());
自执行或即时执行的匿名函数创建了一个作用域,防止全局作用域的污染,理论上还可以防止任何人从外部脚本、浏览器控制台等获取对函数对象或内部定义内容的引用。这就是想法。
然而,由于JavaScript是一种具有反射等特性的动态语言,我想知道是否有任何方法——无论多么巧妙(但不编辑任何现有代码)——可以从JavaScript代码中获取未被故意公开的本地变量的引用。
原因:纯好奇心/破坏事物。
补充说明:我正在研究的东西包括Function.caller和事件侦听器,基本上是IIFE内部已知调用/挂钩的任何项目,但我无法组合完整的包。
var
关键字,您刚刚创建了一个全局变量,并且它可以在 IIFE 外部被访问到。 - adeneo(function() { console.log(arguments.callee.caller) })()
- Catalyst