JavaScript闭包和括号
一,JavaScript闭包和括号,javascript,closures,Javascript,Closures,一, var incrementClickCounts=(函数(){ var-clickCounts=0; 返回函数(){ 返回++点击次数; } })()() 二, var incrementClickCounts=(函数(){ var-clickCounts=0; 返回函数(){ 返回++点击次数; } })() 我正在研究闭包,我遇到了这个例子。第二个示例通过在每次单击时增加clickCounts来正确工作,但第一个示例仅返回值“1” 我在区分如何使用括号正确调用函数时遇到了一些问
var incrementClickCounts=(函数(){
var-clickCounts=0;
返回函数(){
返回++点击次数;
}
})()()
二,
var incrementClickCounts=(函数(){
var-clickCounts=0;
返回函数(){
返回++点击次数;
}
})()
我正在研究闭包,我遇到了这个例子。第二个示例通过在每次单击时增加clickCounts来正确工作,但第一个示例仅返回值“1”
我在区分如何使用括号正确调用函数时遇到了一些问题。此表达式构建了一个函数:
<script type="text/javascript">
var incrementClickCounts = (function(){
var clickCounts = 0;
return function() {
return ++clickCounts;
}
})()
</script>
<input type="button" value="clickkkk" onclick="alert(incrementClickCounts());" />
让我们称之为递增函数
在第一种情况下,你需要
(function(){
var clickCounts = 0;
return function() {
return ++clickCounts;
}
})()
var incrementClickCounts = incrementFunction();
即调用函数并存储结果。每次单击按钮时,您都会发出警报(递增ClickCounts)代码>。因此,您只是在提醒初始调用incrementFunction
的结果
在第二种情况下,你需要
(function(){
var clickCounts = 0;
return function() {
return ++clickCounts;
}
})()
var incrementClickCounts = incrementFunction();
这就是存储函数的方法。每次单击按钮时,都会发出警报(递增ClickCounts())代码>。因此每次都调用该函数。在第一种情况下,incrementClickCounts
包含一个数字;在第二种情况下,是一个函数。让我们来分析一下执行情况:
第一种情况:
var incrementClickCounts = incrementFunction;
因此:
将向“1”发出警报
第二种情况:
alert(incrementClickCounts)
因此:
将执行该函数并增加clickCounts
var incrementClickCounts = (function(){
var clickCounts = 0;
return function() {
return ++clickCounts;
}
}) // declares a function
() // executes that function -
// returns another function that initializes clickCounts to 0 and increments it to 1
// This function is stored in incrementClickCounts
// So incrementClickCounts contains a FUNCTION that you cal call to increment clickCounts
alert(incrementClickCounts())