有没有人尝试或知道如何在匿名函数中访问变量?
实施例
var test = "Hi";
(function() {
var test = "Bye";
// Outputs "Bye"
console.log(test);
})();
// Outputs "Hi"
console.log(test);
正如您可以看到上次日志返回"嗨"但我想得到"再见"任何人都知道如何获得价值"再见"在这个例子中??
答案 0 :(得分:2)
运行一个函数会创建一个范围; “再见”在此范围内定义;并且该范围在函数外部永远不可见。
如果您有权访问IIFE,那么您可以对其进行修改,以便将此变量导出到外部范围。
如果此IIFE位于与您的代码相同的交叉原点的命名函数内,则可以显示外部函数:
var toto = function() {
var test = "Hi";
(function() {
var test = "Bye";
// Outputs "Bye"
console.log(test);
})();
// Outputs "Hi"
console.log(test);
}
console.log(toto);
在这些案件之外,什么也做不了;按设计。即使对功能代码显示的跨源限制也会阻止您访问不属于您的代码。聪明的人已经想到了这一点;我怀疑后门存在。
答案 1 :(得分:0)
唯一的方法是不在匿名函数范围内重新创建变量。
var test = "Hi";
(function() {
test = "Bye"; // notice no "var", meaning it uses the existing variable
// Outputs "Bye"
console.log(test);
})();
// Outputs "Bye"
console.log(test);