关于js语法的小问题

Nik*_* So 2 javascript syntax

我多次看到这种语法,但我找不到正确谷歌的方法,我希望我能在这里得到一些帮助:

  <script>
    (function(){
      //code goes here
    })();
  </script>
Run Code Online (Sandbox Code Playgroud)

为什么函数关键字包含在括号中?它做了什么,这叫做什么?

Bob*_*mer 5

在js中,语法为:

function() { //code }
Run Code Online (Sandbox Code Playgroud)

定义匿名函数.您可以将其存储到变量中并调用它:

var a = function() { //code };
a();
Run Code Online (Sandbox Code Playgroud)

或者如果您不想打扰它,可以一步完成.

(function() { //code })();
Run Code Online (Sandbox Code Playgroud)

括号是必要的,因为:

function() { //code }();
Run Code Online (Sandbox Code Playgroud)

是不正确的语法.

在某些情况下,此语法非常有用,可帮助进行内存管理以及更改变量名称.例如,在javascript中你有一个jQuery对象,但大多数人都称之为$.但有时$用作其他变量而不是jQuery对象.要解决此问题,您可以将代码包装在:

(function($) { // code that uses $ })(jQuery);
Run Code Online (Sandbox Code Playgroud)

这样你可以使用美元符号,而不必担心它是否实际指向jQuery对象.


Tom*_*lak 5

它被称为即时调用的匿名函数.

// defining and calling a named function
function x() { /* do something */ }
x();

// defining an anonymous function (usually to assign it to a variable)
var x = function () { /* do something */ };
x();

// defining and calling an anonymous function in one step 
(function () { /* do something */ })();
Run Code Online (Sandbox Code Playgroud)

大多数情况下,最后一个模式用作创建闭包的一部分.