我试图避免在if
语句中有非常长的代码块,所以我想将另一个函数调用到当前范围内:
var f = function(){ alert(a); };
(function(){
var a = "abc.";
f(); //undefined
eval("("+f+")()"); //this works, but eval is evil
})();
我可能对作用域的基础知识或其他更好的方法缺乏理解,所以无法弄清楚是什么问题。有没有想法如何解决这个问题?我不想通过函数参数传递所需的变量。
提前感谢!
var a = "";
是多余的。你可以把它去掉,得到相同的结果。你最初声明的a
(带有关于它在全局范围内的注释)引用的对象与稍后设置值的a
引用的对象不同。 - evan