Guest User

Untitled

a guest
Feb 18th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. ## What needs to be done to get the correct sequence of numbers from 0 to 4 inclusive?
  2.  
  3. ```javascript
  4. for(var i = 0; i < 5; i++) {
  5. setTimeout(function() {
  6. console.log(i);
  7. }, 0)
  8. }
  9. ```
  10. ---
  11.  
  12. ## Solutions:
  13.  
  14. 1. Third parameter __i__ in setTimeout as argument for handler
  15. ```javascript
  16. for(var i = 0; i < 5; i++) {
  17. setTimeout(function(i) {
  18. console.log(i)
  19. }, i*1000, i)
  20. }
  21. ```
  22.  
  23. 2. IIFE in setTimeout
  24. ```javascript
  25. for(var i = 0; i < 5; i++) {
  26. setTimeout((function(z) {
  27. return function() {
  28. console.log(z)
  29. }
  30. })(i), i * 1000)
  31. }
  32. ```
  33.  
  34. 3. IIFE out of setTimeout
  35. ```javascript
  36. for(var i = 0; i < 5; i++) {
  37. (function(z) {
  38. setTimeout(function(i) {
  39. console.log(z)
  40. }, i*1000)
  41. })(i)
  42. }
  43. ```
  44.  
  45. 4. With help of bind
  46. ```javascript
  47. for(var i = 0; i < 5; i++) {
  48. setTimeout((function(i) {
  49. console.log(i)
  50. }).bind(null, i), i*1000)
  51. }
  52. ```
  53.  
  54.  
  55. 5. ES2015 approach (block scoped variable with <code>let</code> keyword )
  56. ```javascript
  57. for(let i = 0; i < 5; i++) {
  58. setTimeout(function() {
  59. console.log(i)
  60. }, i*1000)
  61. }
  62. ```
Add Comment
Please, Sign In to add comment