(function()在这个特定的代码段中意味着什么?

ant*_*twp 2 javascript ajax mozilla

我正在https://developer.mozilla.org/en/AJAX/Getting_Started上从Mozilla网站学习Ajax ,我面对这段代码:

(function () {
    var httpRequest;
    document.getElementById("ajaxButton").onclick = function () {
        makeRequest('test.html');
    };

    function makeRequest(url) {
        if (window.XMLHttpRequest) { // Mozilla, Safari, ...
            httpRequest = new XMLHttpRequest();
        } else if (window.ActiveXObject) { // IE
            try {
                httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!httpRequest) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
        httpRequest.onreadystatechange = alertContents;
        httpRequest.open('GET', url);
        httpRequest.send();
    }

    function alertContents() {
        if (httpRequest.readyState === 4) {
            if (httpRequest.status === 200) {
                alert(httpRequest.responseText);
            } else {
                alert('There was a problem with the request.');
            }
        }
    }
} //missing closing bracket added by bwalton 5/11/11.   )();
Run Code Online (Sandbox Code Playgroud)

虽然我设法理解代码并使其正常工作,但直到我剥离了顶部的"(function(){"部分以及此代码段末​​尾的所有结束括号.事情是我没有理解"(函数{"的目的,似乎也没有FF.(在我剥离"(函数{"部分之前,它不会将此段识别为Javascript.有人知道这段代码的目的吗?我知道我也曾在某个地方看过它,而这次我想确切地知道它意味着什么.

在此先感谢您的帮助.

Aln*_*tak 7

这个:

(function() {
    ...
})();
Run Code Online (Sandbox Code Playgroud)

创建一个函数并立即调用它,具有自己的范围.一个常见的术语是IIFE - "立即调用函数表达式".

在这种情况下,您无意中合并了最后两行,因此单行注释提示bwalton通过删除尾部来破坏代码) ();.

没有尾随,() 你有一个函数引用,但它没有被调用.

您需要做的就是修复代码副本,然后添加回车符bwalton 5/11/11..