在将函数传递给变量之前将函数括在括号中是什么意思?

时间:2016-06-29 22:09:56

标签: javascript function variable-declaration

我在一些示例代码上看到了这个

var foo = (function(){
    //some code
})();

这是什么意思?和它有什么不同

var foo = function() {
    //some code
}

我看到原始代码所在的here

var registrationForm = (function() {
    var callbacks = [];

    function inputChanged() {
        // Execute registered callbacks
        for(var i = 0; i < callbacks.length; i++) {
            callbacks[i](isValid());
        }
    }

    function isValid() {
        // Check whether form is valid or not
        return !!(name.value) && !!(dateOfBirth.value) && !!(email.value);
    }

    function getFormData() {
        // Get form values
        return {
            name: name.value,
            dateOfBirth: dateOfBirth.value,
            email: email.value  
        };
    }

    var name = document.getElementById("inpName");
    var dateOfBirth = document.getElementById("inpDob");
    var email = document.getElementById("inpEmail");

    name.addEventListener("change", inputChanged);
    dateOfBirth.addEventListener("change", inputChanged);
    email.addEventListener("change", inputChanged);

    return {
        isFormValid: function() {
            return isValid();   
        },
        getFormData: function() {
            return getFormData();
        },
        attachFormChanged: function(cb) {
             callbacks.push(cb);
        }
    };
})();

1 个答案:

答案 0 :(得分:-1)

这被称为立即调用的函数表达式。一旦声明它就被调用,相对于后者,你必须调用它来执行它。