javascript - 为什么要在函数定义调用对中编写全局代码?

标签 javascript

我看到一些示例,其中包括 jQuery 和 jslint 的 JavaScript 代码使用以下表示法:

(function(){
  // do something
})();

代替:

// do something

我一开始以为这只是局部作用域,即在不污染全局命名空间的情况下为代码块创建局部变量。但我也见过完全没有任何局部变量的实例。

我在这里错过了什么?

最佳答案

它也与函数的作用域有关——代码块中声明的所有内容都仅限于该匿名函数。事情通常由框架公开

(function($) {

  var localVarOnly = "local";

  $.fn.myCoolFunction = function() { // in the case of jquery, make this publicly available
    otherCoolFunction(); //alerts hi
    alert(localVarOnly); // alerts local
  };

  function otherCoolFunction() { // scoped to this anonymous function only
    alert('hi');
  };

})(jQuery);

otherCoolFunction(); // undefined
alert(localVarOnly); // undefined

关于javascript - 为什么要在函数定义调用对中编写全局代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2897987/

相关文章:

javascript - 获取 Javascript 中对象的值到数组

javascript - 为什么 ES6 代码和 ES5 代码用 Babel.js 编译后结果不一样?

javascript - Ember在ember-data 1.13.8中获取相关记录

javascript - 如何在 HTML5 Canvas 上进行正确的边界检查?

Javascript 访问某些对象

javascript - 在 IE 8 中以编程方式选择文本区域中的文本

javascript - 列出从现在到用户输入的特定数字的所有闰年

javascript - 确定 snap-scroll 元素的 snap 滚动事件是否完成

javascript - Bluebird promise 并捕获分支

javascript - 动态选择产品变体,比较 2 个阵列