我有以下不会运行的代码(我试图拥有0个全局变量)。
function() {
var createworker = function() {
//private implemenation
var count = 0;
var task1 = function() {
count += 1;
console.log("task1 " + count);
};
var task2 = function() {
count += 1;
console.log("task2 " + count);
};
return {
// these are the aliases or the public api
// revealing module pattern mode
job1: task1,
job2: task2
};
};
var result = 2 + 2;
var worker = createworker();
worker.job1();
worker.job2();
worker.job2();
worker.job2();
worker.job2();
}();
由于某种原因,JavaScript并不喜欢这样。但是下面的例子或者只是在()中包含匿名函数允许它自己调用它。这里发生了什么,为什么会这样?
(function() {
var createworker = function() {
//private implemenation
var count = 0;
var task1 = function() {
count += 1;
console.log("task1 " + count);
};
var task2 = function() {
count += 1;
console.log("task2 " + count);
};
return {
// these are the aliases or the public api
// revealing module pattern mode
job1: task1,
job2: task2
};
};
var result = 2 + 2;
var worker = createworker();
worker.job1();
worker.job2();
worker.job2();
worker.job2();
worker.job2();
}());
答案 0 :(得分:1)
将它括在括号中是你如何使它成为一个表达式。表达式的结果是最后一个参数,因为那里只有一个参数(函数),它是表达式的值。
一旦评估,然后使用以下一组括号调用表达式(函数)的值。
这就是它用括号括起来创建实际表达式的原因。