Javascript why wrap a variable or constructor in an IIFE?

冷暖自知 提交于 2019-11-27 23:11:54

There's no point for the specific construct that you show here. The reason to use an IIFE in this type of construct is when you have static data that you need to declare, want to be available to your object, but don't want it to be publicly accessible or interfere with the global namespace or be instance data.

Since the code you show doesn't show any of those, it isn't really offering any benefit as you've shown. But, if there were some other variables declared outside the object, but inside the IIFE, then the IIFE would protect and enclose them and isolate them from the outside world.

For example, if you had this:

Visualizer = (function() {
  var counter = 0;
  function Visualizer() {
    counter++;
    ...
  }
  Visualizer.prototype.getCount = function () { return counter; }
  ...
  return Visualizer;
})();

var viz = new Visualizer();

Then, the IIFE would be enclosing a variable counter that would be available to all methods of all instances of Visualizer, but isolated from the outside world and the IIFE would be offering some potential benefit.

In case there will be a lot of Visualizers, function1 will be same instance in all of them. As discussed here IIFE method leaks.

Sorry I worded vaguely, but I think JS with saying words need to be bracket properly to know what operation takes priority and what belongs to what is equivalent to simply saying "know what is in what" and stating python was just saying that if it did not have these brackets it would properly resort to method like python where there is no need for brackets and ; where indentation is important. Possibly I've miss the whole question but I think I got it about right.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!