如何从浏览器控制台调用该函数?

时间:2021-02-10 13:27:48

标签: javascript html jquery

我需要从浏览器控制台调用该函数进行测试吗?

test 正常工作,但 test2 不工作

function test() {
  alert(0);
}
(function(e, t) {
  var test2 = (function() {
    alert(2)
  })
})

调用浏览器控制台

test() // its working

test2() // Uncaught ReferenceError: test2 is not defined

2 个答案:

答案 0 :(得分:1)

这里有两个基本问题:

test2 从不存在

test2 被定义在一个从未被调用的函数中,因此它从未被定义。

代码必须实际调用它内部的匿名函数。

但是,假设这是您截断此问题的代码的副作用,并且在您的真实情况下确实会调用匿名函数:

test2 不是全局的

所以为了访问它,你需要在正确的范围内。

对控制台执行此操作的唯一方法是:

  1. 打开浏览器开发者工具的标签
  2. 在匿名函数内添加断点
  3. 运行代码直到到达断点
  4. 然后使用控制台访问现在在范围内的 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