Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: javascript-tutorial/hi.javascript.info
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: javascript-tutorial/hi.javascript.info
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: sync-540d753e
Choose a head ref
Loading
Showing with 5,408 additions and 1,747 deletions.
  1. +1 −0 .github/FUNDING.yml
  2. +1 −0 .gitignore
  3. +67 −0 1-js/01-getting-started/1-intro/article.md
  4. +27 −0 1-js/01-getting-started/2-manuals-specifications/article.md
  5. +22 −0 1-js/01-getting-started/3-code-editors/article.md
  6. +5 −1 1-js/01-getting-started/4-devtools/article.md
  7. BIN 1-js/01-getting-started/4-devtools/chrome.png
  8. BIN 1-js/01-getting-started/4-devtools/chrome.webp
  9. BIN 1-js/01-getting-started/4-devtools/chrome@2.webp
  10. BIN 1-js/01-getting-started/4-devtools/chrome@2x.png
  11. BIN 1-js/01-getting-started/4-devtools/safari.png
  12. BIN 1-js/01-getting-started/4-devtools/safari@2x.png
  13. +10 −0 1-js/02-first-steps/01-hello-world/article.md
  14. +36 −4 1-js/02-first-steps/02-structure/article.md
  15. +4 −0 1-js/02-first-steps/04-variables/2-declare-variables/solution.md
  16. +12 −1 1-js/02-first-steps/04-variables/3-uppercast-constant/task.md
  17. +78 −0 1-js/02-first-steps/04-variables/article.md
  18. +43 −32 1-js/02-first-steps/05-types/article.md
  19. +4 −4 1-js/02-first-steps/07-type-conversions/article.md
  20. +1 −2 1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md
  21. +0 −1 1-js/02-first-steps/08-operators/3-primitive-conversions-questions/task.md
  22. +33 −23 1-js/02-first-steps/08-operators/article.md
  23. +1 −1 1-js/02-first-steps/09-comparison/article.md
  24. +1 −1 1-js/02-first-steps/10-ifelse/2-check-standard/task.md
  25. +7 −3 1-js/02-first-steps/10-ifelse/article.md
  26. +1 −1 1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md
  27. +3 −3 1-js/02-first-steps/11-logical-operators/article.md
  28. +21 −18 1-js/02-first-steps/12-nullish-coalescing-operator/article.md
  29. +33 −8 1-js/02-first-steps/13-while-for/article.md
  30. +2 −2 1-js/02-first-steps/14-switch/article.md
  31. +3 −1 1-js/02-first-steps/15-function-basics/1-if-else-required/solution.md
  32. +1 −1 1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/solution.md
  33. +75 −24 1-js/02-first-steps/15-function-basics/article.md
  34. +29 −17 1-js/02-first-steps/16-function-expressions/article.md
  35. +1 −1 1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md
  36. +1 −1 1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md
  37. +11 −11 1-js/02-first-steps/17-arrow-functions-basics/article.md
  38. +7 −7 1-js/02-first-steps/18-javascript-specials/article.md
  39. +11 −12 1-js/03-code-quality/01-debugging-chrome/article.md
  40. +6 −6 1-js/03-code-quality/02-coding-style/article.md
  41. +4 −0 1-js/03-code-quality/03-comments/article.md
  42. +9 −9 1-js/03-code-quality/05-testing-mocha/article.md
  43. +36 −3 1-js/03-code-quality/06-polyfills/article.md
  44. +11 −10 1-js/04-object-basics/01-object/article.md
  45. +121 −19 1-js/04-object-basics/02-object-copy/article.md
  46. +12 −12 1-js/04-object-basics/03-garbage-collection/article.md
  47. +5 −0 1-js/04-object-basics/04-object-methods/7-calculator/_js.view/test.js
  48. +1 −2 1-js/04-object-basics/04-object-methods/7-calculator/task.md
  49. +1 −0 1-js/04-object-basics/04-object-methods/8-chain-calls/_js.view/solution.js
  50. +8 −0 1-js/04-object-basics/04-object-methods/8-chain-calls/_js.view/test.js
  51. +4 −4 1-js/04-object-basics/04-object-methods/8-chain-calls/solution.md
  52. +7 −5 1-js/04-object-basics/04-object-methods/8-chain-calls/task.md
  53. +3 −3 1-js/04-object-basics/04-object-methods/article.md
  54. +3 −3 1-js/04-object-basics/06-constructor-new/1-two-functions-one-object/task.md
  55. +5 −0 1-js/04-object-basics/06-constructor-new/2-calculator-constructor/_js.view/test.js
  56. +1 −1 1-js/04-object-basics/06-constructor-new/2-calculator-constructor/task.md
  57. +8 −7 1-js/04-object-basics/06-constructor-new/article.md
  58. +39 −24 1-js/04-object-basics/07-optional-chaining/article.md
  59. +26 −14 1-js/04-object-basics/08-symbol/article.md
  60. +59 −34 1-js/04-object-basics/09-object-toprimitive/article.md
  61. +4 −0 1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md
  62. +4 −3 1-js/05-data-types/01-primitives-methods/article.md
  63. +1 −1 1-js/05-data-types/02-number/2-why-rounded-down/solution.md
  64. +99 −44 1-js/05-data-types/02-number/article.md
  65. +1 −7 1-js/05-data-types/03-string/1-ucfirst/solution.md
  66. +2 −2 1-js/05-data-types/03-string/3-truncate/task.md
  67. +68 −81 1-js/05-data-types/03-string/article.md
  68. +2 −2 1-js/05-data-types/04-array/10-maximal-subarray/solution.md
  69. +1 −1 1-js/05-data-types/04-array/2-create-array/task.md
  70. +1 −1 1-js/05-data-types/04-array/3-call-array-this/task.md
  71. +57 −20 1-js/05-data-types/04-array/article.md
  72. +1 −1 1-js/05-data-types/05-array-methods/12-reduce-object/task.md
  73. +3 −3 1-js/05-data-types/05-array-methods/3-filter-range-in-place/_js.view/test.js
  74. +64 −31 1-js/05-data-types/05-array-methods/article.md
  75. +6 −6 1-js/05-data-types/06-iterable/article.md
  76. +42 −33 1-js/05-data-types/07-map-set/article.md
  77. +1 −1 1-js/05-data-types/08-weakmap-weakset/01-recipients-read/solution.md
  78. +18 −10 1-js/05-data-types/08-weakmap-weakset/article.md
  79. +6 −5 1-js/05-data-types/09-keys-values-entries/article.md
  80. +4 −6 1-js/05-data-types/10-destructuring-assignment/6-max-salary/_js.view/solution.js
  81. +74 −47 1-js/05-data-types/10-destructuring-assignment/article.md
  82. +1 −1 1-js/05-data-types/11-date/1-new-date/solution.md
  83. +4 −4 1-js/05-data-types/11-date/article.md
  84. +5 −5 1-js/05-data-types/12-json/article.md
  85. +1 −1 1-js/06-advanced-functions/01-recursion/01-sum-to/solution.md
  86. +1 −1 1-js/06-advanced-functions/01-recursion/05-output-single-linked-list-reverse/solution.md
  87. +3 −3 1-js/06-advanced-functions/01-recursion/article.md
  88. +9 −3 1-js/06-advanced-functions/02-rest-parameters-spread/article.md
  89. +2 −2 1-js/06-advanced-functions/03-closure/10-make-army/solution.md
  90. +2 −0 1-js/06-advanced-functions/03-closure/5-function-in-if/task.md
  91. +1 −1 1-js/06-advanced-functions/03-closure/7-let-scope/solution.md
  92. +1 −1 1-js/06-advanced-functions/03-closure/9-sort-by-field/_js.view/test.js
  93. +2 −2 1-js/06-advanced-functions/03-closure/article.md
  94. +8 −8 1-js/06-advanced-functions/04-var/article.md
  95. +2 −2 1-js/06-advanced-functions/05-global-object/article.md
  96. +1 −1 1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md
  97. +1 −1 1-js/06-advanced-functions/06-function-object/article.md
  98. +5 −5 1-js/06-advanced-functions/08-settimeout-setinterval/article.md
  99. +1 −2 1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/solution.md
  100. +1 −1 1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/task.md
  101. +10 −10 1-js/06-advanced-functions/09-call-apply-decorators/article.md
  102. +1 −1 1-js/06-advanced-functions/10-bind/5-question-use-bind/solution.md
  103. +5 −5 1-js/06-advanced-functions/10-bind/article.md
  104. +2 −2 1-js/06-advanced-functions/12-arrow-functions/article.md
  105. +30 −22 1-js/07-object-properties/01-property-descriptors/article.md
  106. +1 −1 1-js/07-object-properties/02-property-accessors/article.md
  107. +6 −3 1-js/08-prototypes/01-prototype-inheritance/article.md
  108. +8 −3 1-js/08-prototypes/02-function-prototype/4-new-object-same-constructor/solution.md
  109. +1 −1 1-js/08-prototypes/03-native-prototypes/article.md
  110. +1 −1 1-js/08-prototypes/04-prototype-methods/2-dictionary-tostring/solution.md
  111. +60 −41 1-js/08-prototypes/04-prototype-methods/article.md
  112. +4 −4 1-js/09-classes/01-class/article.md
  113. +9 −12 1-js/09-classes/02-class-inheritance/article.md
  114. +4 −4 1-js/09-classes/03-static-properties-methods/3-class-extend-object/solution.md
  115. +24 −9 1-js/09-classes/03-static-properties-methods/article.md
  116. +2 −2 1-js/09-classes/04-private-protected-properties-methods/article.md
  117. +1 −1 1-js/09-classes/06-instanceof/article.md
  118. +2 −2 1-js/09-classes/07-mixins/article.md
  119. +5 −5 1-js/10-error-handling/1-try-catch/1-finally-or-code-after/solution.md
  120. +4 −4 1-js/10-error-handling/1-try-catch/1-finally-or-code-after/task.md
  121. +68 −68 1-js/10-error-handling/1-try-catch/article.md
  122. +6 −6 1-js/10-error-handling/2-custom-errors/article.md
  123. +10 −8 1-js/11-async/01-callbacks/article.md
  124. +1 −1 1-js/11-async/02-promise-basics/03-animate-circle-promise/solution.view/index.html
  125. +55 −31 1-js/11-async/02-promise-basics/article.md
  126. +7 −8 1-js/11-async/03-promise-chaining/article.md
  127. +1 −0 1-js/11-async/04-promise-error-handling/article.md
  128. +8 −4 1-js/11-async/05-promise-api/article.md
  129. +2 −2 1-js/11-async/06-promisify/article.md
  130. +4 −4 1-js/11-async/07-microtask-queue/article.md
  131. +1 −1 1-js/11-async/08-async-await/01-rewrite-async/solution.md
  132. +1 −1 1-js/11-async/08-async-await/01-rewrite-async/task.md
  133. +1 −1 1-js/11-async/08-async-await/02-rewrite-async-2/solution.md
  134. +113 −0 1-js/11-async/08-async-await/04-promise-all-failure/solution.md
  135. +79 −0 1-js/11-async/08-async-await/04-promise-all-failure/task.md
  136. +17 −10 1-js/11-async/08-async-await/article.md
  137. +1 −1 1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/solution.md
  138. +22 −0 1-js/12-generators-iterators/1-generators/article.md
  139. +2 −0 1-js/12-generators-iterators/2-async-iterators-generators/article.md
  140. +60 −32 1-js/13-modules/01-modules-intro/article.md
  141. +27 −30 1-js/13-modules/02-import-export/article.md
  142. +4 −12 1-js/99-js-misc/03-currying-partials/article.md
  143. +3 −3 1-js/99-js-misc/04-reference-type/article.md
  144. +172 −0 1-js/99-js-misc/06-unicode/article.md
  145. +483 −0 1-js/99-js-misc/07-weakref-finalizationregistry/article.md
  146. BIN 1-js/99-js-misc/07-weakref-finalizationregistry/google-chrome-developer-tools.png
  147. +49 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.css
  148. +28 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.html
  149. +24 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.js
  150. +32 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-01.svg
  151. +33 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-02.svg
  152. +75 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-03.svg
  153. +77 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-04.svg
  154. +103 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-05.svg
  155. BIN 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-01.png
  156. BIN 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-02.png
  157. BIN 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-03.gif
  158. BIN 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-04.jpg
  159. BIN 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-05.gif
  160. BIN 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-06.jpg
  161. BIN 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-07.gif
  162. BIN 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-08.jpg
  163. +285 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.css
  164. +49 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.html
  165. +228 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.js
  166. +321 −0 1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/utils.js
  167. +20 −20 2-ui/1-document/01-browser-environment/article.md
  168. +5 −1 2-ui/1-document/02-dom-nodes/article.md
  169. +1 −1 2-ui/1-document/03-dom-navigation/article.md
  170. +4 −4 2-ui/1-document/04-searching-elements-dom/article.md
  171. +33 −10 2-ui/1-document/05-basic-dom-node-properties/article.md
  172. +1 −1 2-ui/1-document/06-dom-attributes-and-properties/article.md
  173. +1 −1 2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/task.md
  174. +4 −1 2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.view/index.html
  175. +2 −2 2-ui/1-document/07-modifying-document/5-why-aaa/solution.md
  176. +1 −1 2-ui/1-document/07-modifying-document/5-why-aaa/task.md
  177. +1 −1 2-ui/1-document/07-modifying-document/6-create-list/task.md
  178. +8 −14 2-ui/1-document/08-styles-and-classes/article.md
  179. +4 −4 2-ui/1-document/09-size-and-scroll/article.md
  180. +6 −0 2-ui/1-document/10-size-and-scroll-window/article.md
  181. +1 −1 2-ui/1-document/11-coordinates/article.md
  182. +1 −1 2-ui/2-events/01-introduction-browser-events/07-carousel/solution.view/index.html
  183. +10 −9 2-ui/2-events/01-introduction-browser-events/article.md
  184. +17 −9 2-ui/2-events/02-bubbling-and-capturing/article.md
  185. +1 −1 2-ui/2-events/03-event-delegation/article.md
  186. +0 −10 2-ui/2-events/04-default-browser-action/3-image-gallery/solution.view/gallery.css
  187. +9 −10 2-ui/2-events/04-default-browser-action/3-image-gallery/source.view/gallery.css
  188. +2 −2 2-ui/2-events/04-default-browser-action/article.md
  189. +5 −1 2-ui/2-events/05-dispatch-events/article.md
  190. +8 −3 2-ui/3-event-details/1-mouse-events-basics/article.md
  191. +1 −1 ...emove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/solution.view/index.html
  192. +1 −1 ...usemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/source.view/index.html
  193. +1 −1 ...s/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/hoverIntent.js
  194. +1 −1 ...ent-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/script.js
  195. +7 −7 2-ui/3-event-details/4-mouse-drag-and-drop/article.md
  196. +70 −36 2-ui/3-event-details/6-pointer-events/article.md
  197. +6 −0 2-ui/3-event-details/6-pointer-events/slider-html.view/index.html
  198. +19 −0 2-ui/3-event-details/6-pointer-events/slider-html.view/style.css
  199. +16 −3 2-ui/3-event-details/6-pointer-events/slider.view/index.html
  200. +1 −0 2-ui/3-event-details/6-pointer-events/slider.view/style.css
  201. +18 −7 2-ui/3-event-details/7-keyboard-events/article.md
  202. +1 −1 2-ui/3-event-details/7-keyboard-events/keyboard-dump.view/index.html
  203. +2 −0 2-ui/3-event-details/7-keyboard-events/keyboard-dump.view/script.js
  204. +27 −28 2-ui/4-forms-controls/1-form-elements/article.md
  205. +1 −1 2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/task.md
  206. +1 −0 2-ui/4-forms-controls/2-focus-blur/5-keyboard-mouse/task.md
  207. +4 −2 2-ui/4-forms-controls/2-focus-blur/article.md
  208. +1 −1 2-ui/4-forms-controls/3-events-change-input/1-deposit-calculator/solution.view/index.html
  209. +1 −1 2-ui/4-forms-controls/3-events-change-input/1-deposit-calculator/task.md
  210. +36 −7 2-ui/4-forms-controls/3-events-change-input/article.md
  211. +25 −5 2-ui/5-loading/01-onload-ondomcontentloaded/article.md
  212. +1 −1 2-ui/5-loading/01-onload-ondomcontentloaded/readystate.view/index.html
  213. +7 −3 2-ui/5-loading/02-script-async-defer/article.md
  214. +148 −38 2-ui/99-ui-misc/02-selection-range/article.md
  215. +1 −0 2-ui/99-ui-misc/02-selection-range/range-hello-1.svg
  216. +50 −0 2-ui/99-ui-misc/03-event-loop/2-micro-macro-queue/solution.md
  217. +21 −0 2-ui/99-ui-misc/03-event-loop/2-micro-macro-queue/task.md
  218. +6 −6 2-ui/99-ui-misc/03-event-loop/article.md
  219. +5 −25 3-frames-and-windows/01-popup-windows/article.md
  220. +8 −1 3-frames-and-windows/03-cross-window-communication/article.md
  221. +1 −1 3-frames-and-windows/06-clickjacking/article.md
  222. +2 −2 4-binary/01-arraybuffer-binary-arrays/01-concat/_js.view/solution.js
  223. +5 −5 4-binary/01-arraybuffer-binary-arrays/article.md
  224. +1 −1 4-binary/02-text-decoder/article.md
  225. +40 −15 4-binary/03-blob/article.md
  226. +3 −3 5-network/01-fetch/article.md
  227. +1 −1 5-network/02-formdata/article.md
  228. +2 −2 5-network/03-fetch-progress/article.md
  229. +20 −11 5-network/04-fetch-abort/article.md
  230. +53 −19 5-network/05-fetch-crossorigin/article.md
  231. +31 −27 5-network/06-fetch-api/article.md
  232. +3 −3 5-network/07-url/article.md
  233. +1 −1 5-network/08-xmlhttprequest/article.md
  234. +1 −1 5-network/09-resume-upload/article.md
  235. +2 −2 5-network/10-long-polling/article.md
  236. +21 −17 5-network/11-websocket/article.md
  237. +1 −0 5-network/11-websocket/demo.view/server.js
  238. +136 −102 6-data-storage/01-cookie/article.md
  239. +1 −1 6-data-storage/01-cookie/cookie.js
  240. +15 −11 6-data-storage/02-localstorage/article.md
  241. +53 −37 6-data-storage/03-indexeddb/article.md
  242. +6 −0 7-animation/1-bezier-curve/article.md
  243. +5 −1 7-animation/1-bezier-curve/demo.svg
  244. +3 −3 7-animation/2-css-animations/1-animate-logo-css/solution.view/index.html
  245. +1 −1 7-animation/2-css-animations/3-animate-circle/solution.view/index.html
  246. +1 −1 7-animation/2-css-animations/3-animate-circle/source.view/index.html
  247. +1 −1 7-animation/2-css-animations/4-animate-circle-callback/solution.view/index.html
  248. +147 −20 7-animation/2-css-animations/article.md
  249. +1 −1 7-animation/3-js-animation/1-animate-ball/solution.view/index.html
  250. +1 −1 7-animation/3-js-animation/2-animate-ball-hops/solution.view/index.html
  251. +5 −5 7-animation/3-js-animation/article.md
  252. +1 −1 7-animation/3-js-animation/bounce-easeinout.view/index.html
  253. +1 −1 7-animation/3-js-animation/bounce-easeout.view/index.html
  254. +1 −1 7-animation/3-js-animation/bounce.view/index.html
  255. +2 −2 7-animation/3-js-animation/text.view/index.html
  256. +2 −2 8-web-components/1-webcomponents-intro/article.md
  257. +2 −2 8-web-components/2-custom-elements/article.md
  258. +1 −1 8-web-components/4-template-element/article.md
  259. +3 −2 8-web-components/5-slots-composition/article.md
  260. +2 −17 8-web-components/6-shadow-dom-style/article.md
  261. +2 −2 9-regular-expressions/03-regexp-unicode/article.md
  262. +1 −1 9-regular-expressions/04-regexp-anchors/article.md
  263. +5 −5 9-regular-expressions/05-regexp-multiline-mode/article.md
  264. +3 −3 9-regular-expressions/07-regexp-escaping/article.md
  265. +4 −0 9-regular-expressions/08-regexp-character-sets-and-ranges/article.md
  266. +1 −1 9-regular-expressions/10-regexp-greedy-and-lazy/article.md
  267. +1 −1 9-regular-expressions/11-regexp-groups/01-test-mac/solution.md
  268. +16 −2 9-regular-expressions/11-regexp-groups/04-parse-expression/solution.md
  269. +3 −3 9-regular-expressions/11-regexp-groups/article.md
  270. +4 −4 9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/solution.md
  271. +1 −1 9-regular-expressions/13-regexp-alternation/03-match-quoted-string/solution.md
  272. +4 −4 9-regular-expressions/13-regexp-alternation/03-match-quoted-string/task.md
  273. +1 −1 9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md
  274. +10 −1 9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md
  275. +1 −0 9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md
  276. +6 −2 9-regular-expressions/14-regexp-lookahead-lookbehind/article.md
  277. +2 −2 9-regular-expressions/15-regexp-catastrophic-backtracking/article.md
  278. +11 −4 9-regular-expressions/17-regexp-methods/article.md
  279. +6 −0 BACKERS.md
  280. +37 −57 LICENSE.md
  281. +15 −2 README.md
  282. BIN svgs.zip
1 change: 1 addition & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
github: iliakan
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -21,3 +21,4 @@ sftp-config.json
Thumbs.db


/svgs
67 changes: 67 additions & 0 deletions 1-js/01-getting-started/1-intro/article.md
Original file line number Diff line number Diff line change
@@ -24,26 +24,44 @@

अलग-अलग इंजनों के अलग-अलग "कोडनेम" होते हैं। उदाहरण के लिए:

<<<<<<< HEAD
- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- क्रोम (Chrome) और ओपेरा (Opera) में।
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- फ़ायरफ़ॉक्स (Firefox) में।
- ...IE के विभिन्न संस्करणों के लिए "ट्राइडेंट" (Trident) और "चक्र" (Chakra) जैसे अन्य कोडनेम हैं, माइक्रोसॉफ्ट एज के लिए "चक्रकोर" (ChakraCore), "नाइट्रो" (Nitro) और सफारी के लिए "स्क्विरफेलिश" (SquirrelFish) आदि।

उपरोक्त शब्द याद रखने के लिए अच्छे हैं क्योंकि इनका उपयोग इंटरनेट पर डेवलपर लेखों में किया जाता है। हम भी उनका उपयोग करेंगे। उदाहरण के लिए, यदि "एक सुविधा X V8 द्वारा समर्थित है", तो यह शायद क्रोम और ओपेरा में काम करता है।
=======
- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome, Opera and Edge.
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox.
- ...There are other codenames like "Chakra" for IE, "JavaScriptCore", "Nitro" and "SquirrelFish" for Safari, etc.

The terms above are good to remember because they are used in developer articles on the internet. We'll use them too. For instance, if "a feature X is supported by V8", then it probably works in Chrome, Opera and Edge.
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
```smart header="How do engines work?"
इंजन जटिल हैं। लेकिन मूल बातें आसान हैं।
<<<<<<< HEAD
1. इंजन (एम्बेडेड अगर यह एक ब्राउज़र है) स्क्रिप्ट पढ़ता है (parse)।
2. फिर यह मशीन भाषा के लिए स्क्रिप्ट ("संकलन") को परिवर्तित करता है (compile)।
3. और फिर मशीन कोड चलता है, (बहुत तेज)।
=======
1. The engine (embedded if it's a browser) reads ("parses") the script.
2. Then it converts ("compiles") the script to machine code.
3. And then the machine code runs, pretty fast.
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
इंजन प्रक्रिया के प्रत्येक चरण में अनुकूलन (Optimisation) लागू करता है। यह संकलित (complied) स्क्रिप्ट को भी देखता है, इसके माध्यम से बहने वाले डेटा का विश्लेषण करता है, और आगे उस ज्ञान के आधार पर मशीन कोड का आगे अनुकूलन करता है।
```

## एक ब्राउज़र में जावास्क्रिप्ट क्या कर सकता है?

<<<<<<< HEAD
आधुनिक जावास्क्रिप्ट एक "सुरक्षित" प्रोग्रामिंग भाषा है। यह मेमोरी या सीपीयू तक निम्न-स्तरीय पहुंच प्रदान नहीं करता है, क्योंकि यह शुरू में उन ब्राउज़रों के लिए बनाया गया था जिन्हें इसकी आवश्यकता नहीं है।
=======
Modern JavaScript is a "safe" programming language. It does not provide low-level access to memory or the CPU, because it was initially created for browsers which do not require it.
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
जावास्क्रिप्ट की क्षमताएं बहुत हद तक उस वातावरण पर निर्भर करती हैं, जिसमें वह चल रहा है. उदाहरण के लिए, [Node.js](https://wikipedia.org/wiki/Node.js) ऐसे कार्यों का समर्थन करता है जो जावास्क्रिप्ट को मनमाने ढंग से फाइल पढ़ने / लिखने, नेटवर्क अनुरोध करने, आदि की अनुमति देता है।

@@ -59,14 +77,19 @@

## ब्राउज़र जावास्क्रिप्ट क्या नहीं कर सकता?

<<<<<<< HEAD
ब्राउज़र में जावास्क्रिप्ट की क्षमताएं उपयोगकर्ता की सुरक्षा के लिए सीमित हैं। उद्देश्य एक बुरे वेबपृष्ठ को निजी जानकारी तक पहुँचने या उपयोगकर्ता के डेटा को नुकसान पहुँचाने से रोकना है।
=======
JavaScript's abilities in the browser are limited to protect the user's safety. The aim is to prevent an evil webpage from accessing private information or harming the user's data.
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
ऐसे प्रतिबंधों के उदाहरणों में शामिल हैं:

- एक वेबपेज पर जावास्क्रिप्ट हार्ड डिस्क पर मनमानी फाइलों को नहीं पढ़ / लिख सकता है, उन्हें कॉपी या प्रोग्राम निष्पादित नहीं कर सकता है। ऑपरेटिंग सिस्टम फ़ंक्शंस (OS functions) पर इसकी कोई सीधी पहुंच नहीं है।

आधुनिक ब्राउज़र इसे फ़ाइलों के साथ काम करने की अनुमति देता है, लेकिन पहुंच सीमित है और केवल तभी प्रदान की जाती है जब उपयोगकर्ता कुछ कार्य करता है, जैसे किसी फ़ाइल को ब्राउज़र विंडो में "ड्रॉप करना" या input ('इनपुट') टैग के माध्यम से चुनना।

<<<<<<< HEAD
कैमरा / माइक्रोफोन और अन्य उपकरणों के साथ बातचीत करने के तरीके हैं, लेकिन उन्हें उपयोगकर्ता की स्पष्ट अनुमति की आवश्यकता होती है। इसलिए एक जावास्क्रिप्ट-सक्षम पेज वेब-कैमरा को चुपके से सक्षम नहीं कर सकता है, परिवेश का निरीक्षण नहीं कर सकता है और [एनएसए](https://en.wikipedia.org/wiki/National_Security_Agency) को जानकारी नहीं भेज सकता है।
- विभिन्न टैब / विंडो आमतौर पर एक-दूसरे के बारे में नहीं जानते हैं। कभी-कभी वे जानते हैं, उदाहरण के लिए जब एक window दूसरे को खोलने के लिए जावास्क्रिप्ट का उपयोग करती है। लेकिन इस मामले में भी, एक पृष्ठ से जावास्क्रिप्ट दूसरे तक नहीं पहुंच सकता है यदि वे विभिन्न साइटों (एक अलग डोमेन, प्रोटोकॉल या पोर्ट से) से आते हैं।

@@ -78,34 +101,62 @@
![](limitations.svg)

यदि ब्राउज़र के बाहर जावास्क्रिप्ट का उपयोग किया जाता है तो ऐसी सीमाएँ मौजूद नहीं हैं, उदाहरण के लिए किसी सर्वर पर। आधुनिक ब्राउज़र भी प्लगइन / एक्सटेंशन की अनुमति देते हैं जो विस्तारित अनुमतियों के लिए पूछ सकते हैं।
=======
There are ways to interact with the camera/microphone and other devices, but they require a user's explicit permission. So a JavaScript-enabled page may not sneakily enable a web-camera, observe the surroundings and send the information to the [NSA](https://en.wikipedia.org/wiki/National_Security_Agency).
- Different tabs/windows generally do not know about each other. Sometimes they do, for example when one window uses JavaScript to open the other one. But even in this case, JavaScript from one page may not access the other page if they come from different sites (from a different domain, protocol or port).

This is called the "Same Origin Policy". To work around that, *both pages* must agree for data exchange and must contain special JavaScript code that handles it. We'll cover that in the tutorial.

This limitation is, again, for the user's safety. A page from `http://anysite.com` which a user has opened must not be able to access another browser tab with the URL `http://gmail.com`, for example, and steal information from there.
- JavaScript can easily communicate over the net to the server where the current page came from. But its ability to receive data from other sites/domains is crippled. Though possible, it requires explicit agreement (expressed in HTTP headers) from the remote side. Once again, that's a safety limitation.

![](limitations.svg)

Such limitations do not exist if JavaScript is used outside of the browser, for example on a server. Modern browsers also allow plugins/extensions which may ask for extended permissions.
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
## क्या जावास्क्रिप्ट को अद्वितीय बनाता है?

जावास्क्रिप्ट के बारे में कम से कम * तीन * महान बातें हैं:

```compare
<<<<<<< HEAD
+ HTML / CSS के साथ पूर्ण एकीकरण (integration)।
+ साधारण चीजें सरल तरीके से की जाती हैं.
+ सभी प्रमुख ब्राउज़रों द्वारा समर्थन और डिफ़ॉल्ट रूप से सक्षम.
=======
+ Full integration with HTML/CSS.
+ Simple things are done simply.
+ Supported by all major browsers and enabled by default.
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
```
जावास्क्रिप्ट इकलौता ब्राउज़र तकनीक है जो इन तीन चीजों को जोड़ती है।

यही जावास्क्रिप्ट को अद्वितीय बनाता है। यही कारण है कि यह ब्राउज़र इंटरफेस बनाने के लिए सबसे व्यापक उपकरण है।

<<<<<<< HEAD
आजकल, जावास्क्रिप्ट का उपयोग सर्वर, मोबाइल एप्लिकेशन आदि बनाने के लिए भी किया जाता है।
=======
That said, JavaScript can be used to create servers, mobile applications, etc.
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
## जावास्क्रिप्ट के ऊपर निर्मित भाषाएँ

जावास्क्रिप्ट का सिंटैक्स सभी की आवश्यकताओं के अनुरूप नहीं है। अलग-अलग लोग अलग-अलग सुविधाएँ चाहते हैं।

इसकी उम्मीद की जानी चाहिए, क्योंकि परियोजनाएं और आवश्यकताएं सभी के लिए अलग-अलग हैं।

<<<<<<< HEAD
इसलिए हाल ही में नई भाषाओं का ढेर दिखाई दिया जा रहा है, जो ब्राउज़र में चलने से पहले जावास्क्रिप्ट में *रूपांतरित* (transpiled) होते हैं।
=======
So, recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser.
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
आधुनिक उपकरण परिवर्तनों को बहुत तेज और पारदर्शी बनाते हैं, वास्तव में डेवलपर्स को किसी अन्य भाषा में कोड करने की अनुमति देता है और उसे अंदर से परिवर्तित करता है।

ऐसी भाषाओं के उदाहरण:

<<<<<<< HEAD
- [CoffeeScript](http://coffeescript.org/) यह जावास्क्रिप्ट के लिए "सिंटैक्टिक शुगर" है। यह छोटे वाक्यविन्यास का परिचय देता है, जिससे हमें स्पष्ट और अधिक सटीक कोड लिखने की अनुमति मिलती है। आमतौर पर, Ruby (रूबी) डेवलपर इसे पसंद करते हैं।
- [TypeScript](http://www.typescriptlang.org/) यह जटिल प्रणालियों के विकास और समर्थन को आसान बनाने के लिए "सख्त डेटा टाइपिंग" को जोड़ने पर केंद्रित है। यह Microsoft द्वारा विकसित किया गया है।
- [Flow](http://flow.org/) यह डेटा टाइपिंग भी जोड़ता है, लेकिन एक अलग तरीके से। Facebook द्वारा विकसित।
@@ -114,8 +165,24 @@
- [Brython](https://brython.info/) यह जावास्क्रिप्ट के लिए एक पायथन ट्रांसपिलर है जो जावास्क्रिप्ट के बिना शुद्ध पायथन में एप्लिकेशन लिखने में सक्षम बनाता है।

## सारांश
=======
- [CoffeeScript](https://coffeescript.org/) is "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it.
- [TypeScript](https://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft.
- [Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
- [Dart](https://www.dartlang.org/) is a standalone language that has its own engine that runs in non-browser environments (like mobile apps), but also can be transpiled to JavaScript. Developed by Google.
- [Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript.
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node.

There are more. Of course, even if we use one of these transpiled languages, we should also know JavaScript to really understand what we're doing.
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
- जावास्क्रिप्ट को शुरुआत में केवल ब्राउज़र-भाषा के रूप में बनाया गया था, लेकिन अब इसे कई अन्य वातावरणों में भी उपयोग किया जाता है।
- आज, जावास्क्रिप्ट HTML / CSS के साथ पूर्ण एकीकरण के साथ सबसे व्यापक रूप से अपनाया जाने वाला एक अद्वितीय ब्राउज़र-भाषा है।
- कई भाषाएं हैं जो जावास्क्रिप्ट में रूपांतरित ("transpiled", किसी अन्य भाषा में अनुवाद करने की प्रक्रिया) होती हैं और कुछ विशेषताएं प्रदान करती हैं।जावास्क्रिप्ट पर महारत हासिल करने के बाद, कम से कम संक्षेप में उन पर एक नज़र डालने की सलाह दी जाती है।

<<<<<<< HEAD
=======
- JavaScript was initially created as a browser-only language, but it is now used in many other environments as well.
- Today, JavaScript has a unique position as the most widely-adopted browser language, fully integrated with HTML/CSS.
- There are many languages that get "transpiled" to JavaScript and provide certain features. It is recommended to take a look at them, at least briefly, after mastering JavaScript.
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
Loading