File tree Expand file tree Collapse file tree 1 file changed +26
-17
lines changed
Expand file tree Collapse file tree 1 file changed +26
-17
lines changed Original file line number Diff line number Diff line change @@ -2922,26 +2922,35 @@ console.log(obj.getName());
29222922
29232923[ Reference Promise.allSettled()] ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled )
29242924
2925-
29262925#### Q201. What will be the output of the following code?
2927- // code
2928- const obj = {};
2929- Object.defineProperty(obj, "key", {
2930- value: 10,
2931- writable: false,
2932- });
2926+ // code here:
2927+ function createCounter() {
2928+ let count = 0;
2929+ return {
2930+ increment: () => count++,
2931+ getValue: () => count
2932+ };
2933+ }
29332934
2934- obj.key = 20 ;
2935- console.log(obj.key );
2935+ const counter1 = createCounter() ;
2936+ const counter2 = createCounter( );
29362937
2937- - [ ] 20
2938- - [x] 10
2939- - [ ] undefined
2940- - [ ] Error
2938+ counter1.increment();
2939+ counter1.increment();
2940+ counter2.increment();
2941+
2942+ console.log(counter1.getValue(), counter2.getValue());
2943+
2944+ - [ ] 1,1
2945+ - [ ] 3,3
2946+ - [x] 2,1
2947+ - [ ] undefined
29412948
29422949Explanation:
2943- Object.defineProperty() created a non-writable property because writable: false was used.
2944- Assigning obj.key = 20 has no effect, so the console prints 10.
2950+ Each call to createCounter() creates a new closure with its own independent count variable.
2951+ So:
2952+ counter1 increments twice → 2
2953+ counter2 increments once → 1
2954+ Closures DO NOT share state unless they reference the same outer scope object.
29452955
2946- Reference:
2947- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
2956+ [ Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures ]
You can’t perform that action at this time.
0 commit comments