我在一些示例代码上看到了这个
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);
}
};
})();
答案 0 :(得分:-1)
这被称为立即调用的函数表达式。一旦声明它就被调用,相对于后者,你必须调用它来执行它。