2017-07-27 73 views
0

最近我一直在学习JavaScript编程。在处理JavaScript模块时(基于函数,这是JavaScript中唯一创建新范围的东西),我遇到了一些麻烦。在Javascript中,代码末尾的“()”是什么意思?

1.

var getter = function() { 
 
    var dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", 
 
    "Thursday", "Friday", "Saturday" 
 
    ]; 
 
    return function(number) { 
 
    return dayNames[number]; 
 
    }; 
 
}; 
 
console.log(getter(2));

2.

var getter = function() { 
 
    var dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", 
 
    "Thursday", "Friday", "Saturday" 
 
    ]; 
 
    return function(number) { 
 
    return dayNames[number]; 
 
    }; 
 
}(); 
 
console.log(getter(2));

我很困惑造成的遗漏不同的结果圆括号()

感谢您的帮助。

+0

右括号表示的[**立即调用函数表达式**](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)(或IIFE)。 –

+0

虽然很多人可能会说这是迂腐的,但是()被称为“圆括号”,而“{}”被称为“大括号”。这个既定的约定使关于语法元素的交流更容易。 < - 在编辑之前添加。 –

+0

谢谢大家! – TommyHUI

回答

0

我明白你的困惑。您看到的前两个一般情况可能相对清晰 - ()function末尾定义了一个不带参数的函数(对于像function myFunction()这样的命名函数是相同的,然后它也用于调用不带参数的函数,例如如:

function myFunction() { // Defines the function named myFunction 
    console.log('hello world'); 
} 
myFunction(); // calls myFunction, and will console log 'hello world') 

被混淆是Immediately Invoked Function Expression (IIFE)额外的情况下这是当我们定义一个函数,然后立即调用它这可能是有用的几个用于创建的目的往往reason--。关闭:

var counterizer = (function() { 
 
\t var count = 0; 
 
\t return { 
 
\t \t incrementCount: function() { 
 
\t \t \t count++; 
 
\t \t \t console.log(count); 
 
\t \t } 
 
\t } 
 
})(); // the inner anonymous function is immediately invoked 
 

 
counterizer.incrementCount(); 
 
counterizer.incrementCount();

在这里,内匿名功能被立即调用,并返回该递增count和控制台日志它 - 它被存储在一个闭合,而无法进入外界的对象。

希望这会有所帮助!

+0

非常感谢! – TommyHUI

0

你的函数返回一个函数,这意味着()必须添加如果它只是返回数字或字符串,你不必须添加()例如

//this function just return function getter()(number) 
 
var getter = function() { 
 
var dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", 
 
"Thursday", "Friday", "Saturday" 
 
]; 
 
//this one return function(number) 
 
return function(number) { 
 
    return dayNames[number]; 
 
}; 
 
}; 
 
//so if you want function to return function you must add() after that function like this: 
 

 
console.log(getter()(2))

相关问题