我试图避免自己在 if
中出现很长的代码块。声明,所以我试图在当前范围内调用另一个函数:
var f = function(){ alert(a); };
(function(){
var a = "abc.";
f(); //undefined
eval("("+f+")()"); //this works, but eval is evil
})();
我可能遗漏了有关范围的一些非常基本的东西,甚至遗漏了其他(更好的)方法来处理整个事情,但我无法弄清楚它是什么。关于如何做到这一点的任何想法?我不想通过函数参数传递我需要的变量。
提前致谢!
最佳答案
如果您不想将所需的变量作为参数传递,则需要确保您调用的函数与定义这些变量的范围相同(或更低)。
所以在你的情况下,如果你带var f = ...
括号中的立即执行函数中的定义将与变量a
在同一范围内.我不确定这与 if
的匹配度如何。您提到但未包含在代码示例中的语句,但您可以执行以下操作:
(function(){
var f = function(){ alert(a); };
// other code here if you have any
var a;
if ("your if condition" == "something") {
a = "abc.";
f();
}
})();
或者只是声明
a
在同一个地方声明f
.
关于javascript - 在另一个范围内运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7343243/