我需要从浏览器控制台调用该函数进行测试吗?
test 正常工作,但 test2 不工作
function test() {
alert(0);
}
(function(e, t) {
var test2 = (function() {
alert(2)
})
})
调用浏览器控制台
test() // its working
test2() // Uncaught ReferenceError: test2 is not defined
答案 0 :(得分:1)
这里有两个基本问题:
test2
从不存在test2
被定义在一个从未被调用的函数中,因此它从未被定义。
代码必须实际调用它内部的匿名函数。
但是,假设这是您截断此问题的代码的副作用,并且在您的真实情况下确实会调用匿名函数:
test2
不是全局的所以为了访问它,你需要在正确的范围内。
对控制台执行此操作的唯一方法是:
test2
。请注意,鉴于该代码的结构,您可能必须将断点放在 test2
已分配给它的值之前,然后逐步执行代码,直到它被定义。
答案 1 :(得分:0)
由于您的 test2
var 本身就是一个函数,因此无需将它们包装在 ()
中。
复制/粘贴到浏览器控制台进行检查;
var test2 = (function() {
alert(2)
});
test2();
Advanced JavaScript: Why is this function wrapped in parentheses?
如果你真的想要那些括号,你可以像这样调用现有的函数;
(function(e, t) {
var test2 = (function() {
alert(2)
});
test2(); // <-- Run function
})()
//^^ Extra parentheses to instantly run wrapper function