Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## What needs to be done to get the correct sequence of numbers from 0 to 4 inclusive?
- ```javascript
- for(var i = 0; i < 5; i++) {
- setTimeout(function() {
- console.log(i);
- }, 0)
- }
- ```
- ---
- ## Solutions:
- 1. Third parameter __i__ in setTimeout as argument for handler
- ```javascript
- for(var i = 0; i < 5; i++) {
- setTimeout(function(i) {
- console.log(i)
- }, i*1000, i)
- }
- ```
- 2. IIFE in setTimeout
- ```javascript
- for(var i = 0; i < 5; i++) {
- setTimeout((function(z) {
- return function() {
- console.log(z)
- }
- })(i), i * 1000)
- }
- ```
- 3. IIFE out of setTimeout
- ```javascript
- for(var i = 0; i < 5; i++) {
- (function(z) {
- setTimeout(function(i) {
- console.log(z)
- }, i*1000)
- })(i)
- }
- ```
- 4. With help of bind
- ```javascript
- for(var i = 0; i < 5; i++) {
- setTimeout((function(i) {
- console.log(i)
- }).bind(null, i), i*1000)
- }
- ```
- 5. ES2015 approach (block scoped variable with <code>let</code> keyword )
- ```javascript
- for(let i = 0; i < 5; i++) {
- setTimeout(function() {
- console.log(i)
- }, i*1000)
- }
- ```
Add Comment
Please, Sign In to add comment