Javascript IIFE立即调用函数Expression

Javascript IIFE Immediately invoked function Expression

本文关键字:函数 Expression 调用 IIFE Javascript      更新时间:2023-09-26

我在JavaScript:中创建了函数表达式

var MKObjects = MKObjects || {};
MKObjects.spReporting = (function () {
    // methods
})();

它工作得很好——问题是:我如何在控制台窗口中找到它?

它不是在全局名称空间中创建的——它显然没有在窗口对象上定义。

当我在控制台窗口中键入MKObjectsMKObjects.spReporting时,我什么也得不到。

如果您只是尝试调试它,那么当调试器仍在同一范围内时,可以在分配之后立即放置断点。

否则,如果MKObjects不是全局的,并且不能从全局(即全局var中的字段)访问,那么您将无法从控制台访问它。

例如:

(function() {
  var x = ...;
})()

您无法访问调试器中的x,因为它在全局作用域中不可见。

var x;
(function() {
  x = ...;
})()

您可以访问x,因为它是全局的。

var y;
(function() {
  var x = ...;
  y.propertyX = x;
})()

您可以通过y.propertyX 通过y全局访问x

(function() {
  var x = ...;
  debugger; // or breakpoint
})()

当代码执行达到这一点时,您将可以从调试器窗口临时访问x

您的赋值是匿名立即调用函数的结果,这一事实无关紧要。