Javascript IIFE立即调用函数表达式

时间:2016-01-06 22:12:34

标签: javascript

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

var MKObjects = MKObjects || {};

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

它工作正常 - 问题是:如何在控制台窗口中找到它?

它没有在全局命名空间中创建 - 它显然没有在窗口对象上定义。

当我在控制台窗口中输入MKObjectsMKObjects.spReporting时,我什么都没得到。

1 个答案:

答案 0 :(得分:0)

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

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

例如:

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

您无法在调试器中访问x,因为它在全局范围内不可见。

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

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

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

您可以x

通过y全球访问y.propertyX
(function() {
  var x = ...;
  debugger; // or breakpoint
})()

当代码执行到此时,您将从调试器窗口临时访问x

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