这个JavaScript是什么

What is this JavaScript

本文关键字:是什么 JavaScript 这个      更新时间:2023-09-26

下面的代码会做什么?

我已经使用JS很多年了,但不知道这个结构是如何工作的?

(function() { /* No implementation yet */ })();

知道没有实现——如果有——我该如何调用它?以下内容会成为匿名对象吗?

var temp = (function() {  })();

我可以用作:

temp.doWhateverDefined();

您有一个立即调用的函数表达式(IIFE(。它在JavaScript中非常常见。

(function() { /* No implementation yet */ })();

这被称为"立即调用函数表达式"或简称IIFE。它被立即声明、评估和调用。

基本思想是:

var x = (function() { return 5;})();
alert(x); //5

它正在立即运行。就好像你说:

var f = function() { /* No implementation yet */ }
(f)();

与相同

var f = function() { /* No implementation yet */ }
f();

它的目的是允许代码块(页面初始化等(使用它喜欢的任何变量/函数名称,而不会与其他可能使用相同名称的Javascript代码发生冲突。所有功能等。在那个街区宣布的是本地的,不要伤害外界。

这是一个匿名函数,因此除非将其分配给名称,否则您不能在创建它的行中调用其他函数

var temp = (function() {  })();

这段代码应该改为

var temp = (function() {  });

这样,您就可以将函数实际分配给名称。要调用它,只需使用括号

temp()

它是一个自执行函数。你不调用它,它会自动调用。

如果函数返回一些东西,var temp = (function() { })();就会工作。

您所拥有的是一个已经被调用的自调用函数。

var temp = (function() {  })();

因此,函数必须返回一个函数,使temp((或temp.something((;可以被触发。有关更多信息,请参阅下面的示例,

var temp = (function() { return {
    doWhateverDefined: function () {
        return 'invoked';}
      };  
    }
)();
alert(temp.doWhateverDefined()); //should alert invoked

演示:http://jsfiddle.net/5ch8F/1/