1.
<script type="text/javascript"> var incrementclickcounts = (function(){ var clickcounts = 0; return function() { return ++clickcounts; } })()() </script> <input type="button" value="clickkkk" onclick="alert(incrementclickcounts);" />
2.
<script type="text/javascript"> var incrementclickcounts = (function(){ var clickcounts = 0; return function() { return ++clickcounts; } })() </script> <input type="button" value="clickkkk" onclick="alert(incrementclickcounts());" />
i'm working on closures, , came across example. second example works correctly incrementing clickcounts every time clicked, first example returns value of '1'.
i having trouble distinguishing on how use parentheses correctly invoke function.
in first case, incrementclickcounts
contains number; in second case, function. let's break down execution :
first case :
var incrementclickcounts = (function(){ var clickcounts = 0; return function() { return ++clickcounts; } }) // declares function () // executes function - returns function initializes clickcounts 0 , increments 1 () // executes returned function --> outputs 1 , stores in incrementclickcounts variable. // incrementclickcounts contains number = 1
so :
alert(incrementclickcounts)
will alert "1".
second case :
var incrementclickcounts = (function(){ var clickcounts = 0; return function() { return ++clickcounts; } }) // declares function () // executes function - // returns function initializes clickcounts 0 , increments 1 // function stored in incrementclickcounts // incrementclickcounts contains function cal call increment clickcounts
so :
alert(incrementclickcounts())
will execute function , increment clickcounts.
Comments
Post a Comment