From 88bd9889a2e0908866f15c77e31cb2e4f34b5310 Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Thu, 26 May 2016 12:43:54 +0300 Subject: [PATCH] work --- .../01-hello-world/1-hello-alert/solution.md | 0 .../1-hello-alert/solution.view/index.html | 12 + .../01-hello-world/1-hello-alert/task.md | 12 + 1-js/2-first-steps/01-hello-world/article.md | 85 ++++ .../01-hello-world/hello-world-render.png | Bin 0 -> 44182 bytes .../01-hello-world/hello-world-render@2x.png | Bin 0 -> 84598 bytes .../1-hello-alert-ext/alert.js | 1 + .../1-hello-alert-ext/index.html | 10 + .../1-hello-alert-ext/solution.md | 8 + .../1-hello-alert-ext/task.md | 9 + .../2-async-defer-first/solution.md | 5 + .../2-async-defer-first/task.md | 29 ++ .../02-external-script/article.md | 251 ++++++++++ .../02-external-script/banner.js | 1 + 1-js/2-first-steps/03-structure/article.md | 158 +++++++ 1-js/2-first-steps/04-strict-mode/article.md | 73 +++ .../1-hello-variables/solution.md | 12 + .../05-variables/1-hello-variables/task.md | 10 + .../2-declare-variables/solution.md | 21 + .../05-variables/2-declare-variables/task.md | 8 + 1-js/2-first-steps/05-variables/article.md | 315 +++++++++++++ .../05-variables/variable-change.png | Bin 0 -> 18910 bytes .../05-variables/variable-change@2x.png | Bin 0 -> 44507 bytes 1-js/2-first-steps/05-variables/variable.png | Bin 0 -> 8539 bytes .../05-variables/variable@2x.png | Bin 0 -> 19453 bytes 1-js/2-first-steps/07-types/article.md | 429 ++++++++++++++++++ .../1-increment-order/solution.md | 18 + .../08-operators/1-increment-order/task.md | 15 + .../2-assignment-result/solution.md | 5 + .../08-operators/2-assignment-result/task.md | 14 + .../solution.md | 23 + .../3-primitive-conversions-questions/task.md | 28 ++ 1-js/2-first-steps/08-operators/article.md | 405 +++++++++++++++++ .../1-comparison-questions/solution.md | 21 + .../1-comparison-questions/task.md | 18 + 1-js/2-first-steps/09-comparison/article.md | 207 +++++++++ .../11-ifelse/1-if-zero-string/solution.md | 12 + .../11-ifelse/1-if-zero-string/task.md | 14 + .../2-check-standard/ifelse_task2.png | Bin 0 -> 23366 bytes .../2-check-standard/ifelse_task2/index.html | 20 + .../2-check-standard/ifelse_task2@2x.png | Bin 0 -> 55361 bytes .../11-ifelse/2-check-standard/solution.md | 4 + .../11-ifelse/2-check-standard/task.md | 14 + .../11-ifelse/3-sign/if_sign/index.html | 22 + .../11-ifelse/3-sign/solution.md | 14 + 1-js/2-first-steps/11-ifelse/3-sign/task.md | 15 + .../11-ifelse/4-check-login/ifelse_task.png | Bin 0 -> 38919 bytes .../4-check-login/ifelse_task@2x.png | Bin 0 -> 94586 bytes .../11-ifelse/4-check-login/solution.md | 31 ++ .../11-ifelse/4-check-login/task.md | 23 + .../5-rewrite-if-question/solution.md | 6 + .../11-ifelse/5-rewrite-if-question/task.md | 16 + .../6-rewrite-if-else-question/solution.md | 9 + .../6-rewrite-if-else-question/task.md | 24 + 1-js/2-first-steps/11-ifelse/article.md | 237 ++++++++++ .../1-alert-null-2-undefined/solution.md | 6 + .../1-alert-null-2-undefined/task.md | 12 + .../12-logical-ops/2-alert-or/solution.md | 13 + .../12-logical-ops/2-alert-or/task.md | 12 + .../3-alert-1-null-2/solution.md | 6 + .../12-logical-ops/3-alert-1-null-2/task.md | 12 + .../12-logical-ops/4-alert-and/solution.md | 10 + .../12-logical-ops/4-alert-and/task.md | 12 + .../12-logical-ops/5-alert-and-or/solution.md | 16 + .../12-logical-ops/5-alert-and-or/task.md | 12 + .../6-check-if-in-range/solution.md | 6 + .../6-check-if-in-range/task.md | 9 + .../7-check-if-out-range/solution.md | 12 + .../7-check-if-out-range/task.md | 9 + .../12-logical-ops/8-if-question/solution.md | 20 + .../12-logical-ops/8-if-question/task.md | 16 + 1-js/2-first-steps/12-logical-ops/article.md | 308 +++++++++++++ .../1-loop-last-value/solution.md | 26 ++ .../13-while-for/1-loop-last-value/task.md | 16 + .../2-which-value-while/solution.md | 31 ++ .../13-while-for/2-which-value-while/task.md | 23 + .../3-which-value-for/solution.md | 17 + .../13-while-for/3-which-value-for/task.md | 21 + .../13-while-for/4-for-even/solution.md | 11 + .../13-while-for/4-for-even/task.md | 9 + .../5-replace-for-while/solution.md | 10 + .../13-while-for/5-replace-for-while/task.md | 14 + .../6-repeat-until-correct/solution.md | 15 + .../6-repeat-until-correct/task.md | 14 + .../13-while-for/7-list-primes/solution.md | 28 ++ .../13-while-for/7-list-primes/task.md | 18 + 1-js/2-first-steps/13-while-for/article.md | 371 +++++++++++++++ .../1-rewrite-switch-if-else/solution.md | 20 + .../1-rewrite-switch-if-else/task.md | 26 ++ .../14-switch/2-rewrite-if-switch/solution.md | 27 ++ .../14-switch/2-rewrite-if-switch/task.md | 23 + 1-js/2-first-steps/14-switch/article.md | 169 +++++++ 92 files changed, 4044 insertions(+) create mode 100644 1-js/2-first-steps/01-hello-world/1-hello-alert/solution.md create mode 100644 1-js/2-first-steps/01-hello-world/1-hello-alert/solution.view/index.html create mode 100644 1-js/2-first-steps/01-hello-world/1-hello-alert/task.md create mode 100644 1-js/2-first-steps/01-hello-world/article.md create mode 100644 1-js/2-first-steps/01-hello-world/hello-world-render.png create mode 100644 1-js/2-first-steps/01-hello-world/hello-world-render@2x.png create mode 100644 1-js/2-first-steps/02-external-script/1-hello-alert-ext/alert.js create mode 100644 1-js/2-first-steps/02-external-script/1-hello-alert-ext/index.html create mode 100644 1-js/2-first-steps/02-external-script/1-hello-alert-ext/solution.md create mode 100644 1-js/2-first-steps/02-external-script/1-hello-alert-ext/task.md create mode 100644 1-js/2-first-steps/02-external-script/2-async-defer-first/solution.md create mode 100644 1-js/2-first-steps/02-external-script/2-async-defer-first/task.md create mode 100644 1-js/2-first-steps/02-external-script/article.md create mode 100644 1-js/2-first-steps/02-external-script/banner.js create mode 100644 1-js/2-first-steps/03-structure/article.md create mode 100644 1-js/2-first-steps/04-strict-mode/article.md create mode 100644 1-js/2-first-steps/05-variables/1-hello-variables/solution.md create mode 100644 1-js/2-first-steps/05-variables/1-hello-variables/task.md create mode 100644 1-js/2-first-steps/05-variables/2-declare-variables/solution.md create mode 100644 1-js/2-first-steps/05-variables/2-declare-variables/task.md create mode 100644 1-js/2-first-steps/05-variables/article.md create mode 100644 1-js/2-first-steps/05-variables/variable-change.png create mode 100644 1-js/2-first-steps/05-variables/variable-change@2x.png create mode 100644 1-js/2-first-steps/05-variables/variable.png create mode 100644 1-js/2-first-steps/05-variables/variable@2x.png create mode 100644 1-js/2-first-steps/07-types/article.md create mode 100644 1-js/2-first-steps/08-operators/1-increment-order/solution.md create mode 100644 1-js/2-first-steps/08-operators/1-increment-order/task.md create mode 100644 1-js/2-first-steps/08-operators/2-assignment-result/solution.md create mode 100644 1-js/2-first-steps/08-operators/2-assignment-result/task.md create mode 100644 1-js/2-first-steps/08-operators/3-primitive-conversions-questions/solution.md create mode 100644 1-js/2-first-steps/08-operators/3-primitive-conversions-questions/task.md create mode 100644 1-js/2-first-steps/08-operators/article.md create mode 100644 1-js/2-first-steps/09-comparison/1-comparison-questions/solution.md create mode 100644 1-js/2-first-steps/09-comparison/1-comparison-questions/task.md create mode 100644 1-js/2-first-steps/09-comparison/article.md create mode 100644 1-js/2-first-steps/11-ifelse/1-if-zero-string/solution.md create mode 100644 1-js/2-first-steps/11-ifelse/1-if-zero-string/task.md create mode 100644 1-js/2-first-steps/11-ifelse/2-check-standard/ifelse_task2.png create mode 100644 1-js/2-first-steps/11-ifelse/2-check-standard/ifelse_task2/index.html create mode 100644 1-js/2-first-steps/11-ifelse/2-check-standard/ifelse_task2@2x.png create mode 100644 1-js/2-first-steps/11-ifelse/2-check-standard/solution.md create mode 100644 1-js/2-first-steps/11-ifelse/2-check-standard/task.md create mode 100644 1-js/2-first-steps/11-ifelse/3-sign/if_sign/index.html create mode 100644 1-js/2-first-steps/11-ifelse/3-sign/solution.md create mode 100644 1-js/2-first-steps/11-ifelse/3-sign/task.md create mode 100644 1-js/2-first-steps/11-ifelse/4-check-login/ifelse_task.png create mode 100644 1-js/2-first-steps/11-ifelse/4-check-login/ifelse_task@2x.png create mode 100644 1-js/2-first-steps/11-ifelse/4-check-login/solution.md create mode 100644 1-js/2-first-steps/11-ifelse/4-check-login/task.md create mode 100644 1-js/2-first-steps/11-ifelse/5-rewrite-if-question/solution.md create mode 100644 1-js/2-first-steps/11-ifelse/5-rewrite-if-question/task.md create mode 100644 1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/solution.md create mode 100644 1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/task.md create mode 100644 1-js/2-first-steps/11-ifelse/article.md create mode 100644 1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/solution.md create mode 100644 1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/task.md create mode 100644 1-js/2-first-steps/12-logical-ops/2-alert-or/solution.md create mode 100644 1-js/2-first-steps/12-logical-ops/2-alert-or/task.md create mode 100644 1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/solution.md create mode 100644 1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/task.md create mode 100644 1-js/2-first-steps/12-logical-ops/4-alert-and/solution.md create mode 100644 1-js/2-first-steps/12-logical-ops/4-alert-and/task.md create mode 100644 1-js/2-first-steps/12-logical-ops/5-alert-and-or/solution.md create mode 100644 1-js/2-first-steps/12-logical-ops/5-alert-and-or/task.md create mode 100644 1-js/2-first-steps/12-logical-ops/6-check-if-in-range/solution.md create mode 100644 1-js/2-first-steps/12-logical-ops/6-check-if-in-range/task.md create mode 100644 1-js/2-first-steps/12-logical-ops/7-check-if-out-range/solution.md create mode 100644 1-js/2-first-steps/12-logical-ops/7-check-if-out-range/task.md create mode 100644 1-js/2-first-steps/12-logical-ops/8-if-question/solution.md create mode 100644 1-js/2-first-steps/12-logical-ops/8-if-question/task.md create mode 100644 1-js/2-first-steps/12-logical-ops/article.md create mode 100644 1-js/2-first-steps/13-while-for/1-loop-last-value/solution.md create mode 100644 1-js/2-first-steps/13-while-for/1-loop-last-value/task.md create mode 100644 1-js/2-first-steps/13-while-for/2-which-value-while/solution.md create mode 100644 1-js/2-first-steps/13-while-for/2-which-value-while/task.md create mode 100644 1-js/2-first-steps/13-while-for/3-which-value-for/solution.md create mode 100644 1-js/2-first-steps/13-while-for/3-which-value-for/task.md create mode 100644 1-js/2-first-steps/13-while-for/4-for-even/solution.md create mode 100644 1-js/2-first-steps/13-while-for/4-for-even/task.md create mode 100644 1-js/2-first-steps/13-while-for/5-replace-for-while/solution.md create mode 100644 1-js/2-first-steps/13-while-for/5-replace-for-while/task.md create mode 100644 1-js/2-first-steps/13-while-for/6-repeat-until-correct/solution.md create mode 100644 1-js/2-first-steps/13-while-for/6-repeat-until-correct/task.md create mode 100644 1-js/2-first-steps/13-while-for/7-list-primes/solution.md create mode 100644 1-js/2-first-steps/13-while-for/7-list-primes/task.md create mode 100644 1-js/2-first-steps/13-while-for/article.md create mode 100644 1-js/2-first-steps/14-switch/1-rewrite-switch-if-else/solution.md create mode 100644 1-js/2-first-steps/14-switch/1-rewrite-switch-if-else/task.md create mode 100644 1-js/2-first-steps/14-switch/2-rewrite-if-switch/solution.md create mode 100644 1-js/2-first-steps/14-switch/2-rewrite-if-switch/task.md create mode 100644 1-js/2-first-steps/14-switch/article.md diff --git a/1-js/2-first-steps/01-hello-world/1-hello-alert/solution.md b/1-js/2-first-steps/01-hello-world/1-hello-alert/solution.md new file mode 100644 index 00000000..e69de29b diff --git a/1-js/2-first-steps/01-hello-world/1-hello-alert/solution.view/index.html b/1-js/2-first-steps/01-hello-world/1-hello-alert/solution.view/index.html new file mode 100644 index 00000000..45e6744b --- /dev/null +++ b/1-js/2-first-steps/01-hello-world/1-hello-alert/solution.view/index.html @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/1-js/2-first-steps/01-hello-world/1-hello-alert/task.md b/1-js/2-first-steps/01-hello-world/1-hello-alert/task.md new file mode 100644 index 00000000..afed6a91 --- /dev/null +++ b/1-js/2-first-steps/01-hello-world/1-hello-alert/task.md @@ -0,0 +1,12 @@ +importance: 5 + +--- + +# Show an alert + +Create a page that shows a message "I'm JavaScript!". + +Do it in a sandbox, or on your hard drive, doesn't matter, just ensure that it works. + +[demo src="solution"] + diff --git a/1-js/2-first-steps/01-hello-world/article.md b/1-js/2-first-steps/01-hello-world/article.md new file mode 100644 index 00000000..9ea5b652 --- /dev/null +++ b/1-js/2-first-steps/01-hello-world/article.md @@ -0,0 +1,85 @@ +# Hello, world! + +In this chapter we'll create a simple script and see it working. + +[cut] + +## The "script" tag + +```smart header="What if I want to move faster?" +In the case if the reader has developed with JavaScript already or has a lot of experience in another language, he can skip detailed explanatins and jump to . There he can find an essense of important features. + +If you have enough time and want to learn things in details then read on :) +``` + +JavaScript programs can be inserted in any place of HTML with the help of the ` +*/!* + +

...After the script.

+ + + + +``` + +```online +You can run the example clicking on a "Play" button in it's right-top corner. +``` + +The ` + ``` + + These comments were supposed to hide the code from an old browser that did't understand a ` + + + + \ No newline at end of file diff --git a/1-js/2-first-steps/02-external-script/1-hello-alert-ext/solution.md b/1-js/2-first-steps/02-external-script/1-hello-alert-ext/solution.md new file mode 100644 index 00000000..f42c41e6 --- /dev/null +++ b/1-js/2-first-steps/02-external-script/1-hello-alert-ext/solution.md @@ -0,0 +1,8 @@ +The HTML code: + +[html src="index.html"] + +For the file `alert.js` in the same folder: + +[js src="alert.js"] + diff --git a/1-js/2-first-steps/02-external-script/1-hello-alert-ext/task.md b/1-js/2-first-steps/02-external-script/1-hello-alert-ext/task.md new file mode 100644 index 00000000..fe38de40 --- /dev/null +++ b/1-js/2-first-steps/02-external-script/1-hello-alert-ext/task.md @@ -0,0 +1,9 @@ +importance: 5 + +--- + +# Show an alert with an external script + +Take the solution of the previous task . Modify it by extracting the script content into an external file `alert.js`, residing in the same folder. + +Open the page, ensures that the alert works. diff --git a/1-js/2-first-steps/02-external-script/2-async-defer-first/solution.md b/1-js/2-first-steps/02-external-script/2-async-defer-first/solution.md new file mode 100644 index 00000000..0513e5fc --- /dev/null +++ b/1-js/2-first-steps/02-external-script/2-async-defer-first/solution.md @@ -0,0 +1,5 @@ +Answers: + +1. The first is `big.js`, that's a normal sequence for external ` + +``` + +What if we add `async`? + +```html + + +``` + +What if we switch to `defer`? + +```html + + +``` + diff --git a/1-js/2-first-steps/02-external-script/article.md b/1-js/2-first-steps/02-external-script/article.md new file mode 100644 index 00000000..78753c04 --- /dev/null +++ b/1-js/2-first-steps/02-external-script/article.md @@ -0,0 +1,251 @@ +# External scripts + +If we have a lot of JavaScript code, we can it put it into a separate file. + +The script file is attached to HTML like this: + +```html + +``` + +Here `/path/to/script.js` is an absolute path to the file with the script (from the site root). + +It is also possible to provide a path relative to the current page. For instance, `src="script.js"` would mean a file `"script.js"` from the current folder. + +We can give a full URL al well, for instance: + +```html + +``` + +To attach several scripts, use multiple tags: + +```html + + +… +``` + +```smart +As a rule, only simplest scripts are put into HTML. More complex ones reside in separate files. + +The benefit of a separate file is that the browser will download it and then store in its [cache](https://en.wikipedia.org/wiki/Web_cache). + +After it, other pages which want the same script will take it from the cache instead of downloading it. So the file is actually downloaded only once. + +That saves traffic and makes pages faster. +``` + +````warn header="If `src` is set, the script content is ignored." +A single ` +``` + +We must choose: either it's an external ` + +``` +```` + +## Asynchronous scripts: defer/async + +Browser loads and shows HTML gradually as it comes. That's clearly noticeable on the slow internet connection. The browser doesn't wait for the page to load fully. It shows the part that has been loaded already, and then adds content to it as it loads. + +As we noted before, when the browser meets a ` +*/!* + +

Rabbits counted!

+ + + +``` + +The behavior is called "synchronous". Usually it causes no problems, but there's an important consequence. + +**If the script is external, then until the browser executes it, it can't show the page below.** + +So, in this document, until `big.js` loads and executes, the `` content is hidden: + +```html + + +*!* + +*/!* + + + This text is not shown until the browser executes big.js. + + +``` + +The question is -- do we really want to hide the body until the script finishes? + +Most of time, we don't. + +Sometimes, a script may contain a very important code that really must be loaded before the rest of the page is parsed (and the scripts below executed). But that's only sometimes. + +Usually a visitor should see the page content while the script is loading. + +There are situations when such blocking is even dangerous. For example, when we attach a script from the banner system, or a 3rd-party integration code. + +Like this: + +```html run height=100 +Wait. The text belown will shown up only after the script executes. + + + +

…Important information!

+``` + +It's just wrong that the rest of the page is not shown until the banner is loaded. And what if their server is overloaded and responds slowly? Our visitors will have wait even more, maybe even leave for another, faster site. + +So, how to "fix" the blocking behavior? + +Our first attempt could be to put all such scripts to the bottom of the ``, after all content. + +But the solution is not perfect: + +1. The script won't start loading until the whole page loads. If the page is large, then the delay may be significant. We'd like the browser to start loading a script early, but still do not block the page. +2. If there is more than one script at the bottom of the page, and the first script is slow, then the second one will have to wait for it. Browser executes only one ` + +

…Important information!

+``` + +Now if we run it, we'll see that the whole document is displayed immediately, and the external script runs when it loads. + +## Defer vs Async + +Please note that there is one similarity and two differences between `defer` and `async`. + +1. **Both attributes allow the browser to show the page without waiting for the script to load.** +2. **Deferred scripts keep the relative order, while async scripts do not.** + + For example, in the code below (with `async`) there are two scripts. The one which loads first will run first. + + ```html + + + ``` + + If `2.js` is bigger than `1.js`, it may happen that `2.js` will run before `1.js`. That's normal. Async scripts are totally independent. + + And in the code below `defer` is used, which forces browser to keeps execution order. Even if `2.js` loads first, it waits and executes after `1.js`: + + ```html + + + ``` + + This feature of "deferred" scripts is important when `2.js` relies on the result of `1.js` and we must be sure that the order is determined. + +3. **A script with `defer` always waits for the HTML-document to fully load. The `async` script runs immediately as it loads.** + + For instance, when the document is large, like: + + ```html + + + + A long long text. Many words. + ... + ``` + + ...Here `async.js` executes when it loads -- possibly, before the document is fully loaded. In contrast, `defer.js` always waits for the full document to be ready. + + The choice between `defer` and `async` here depends on our intentions. Sometimes a script doesn't need the document at all (like a web counter), so it should execute ASAP. In this case `async` is superb. + + And in another case a script may need the whole document to do some work with it. Then `defer` is preferable. + +## Summary + +- Scripts in an external file can be inserted on the page via ``. +- Normally, the browser doesn't show the document after the script until it executes. Unless the script has `async` or `defer` attributes. +- Both `async` and `defer` allow the browser to start script loading and then continue to parse/show the page. They only work on external scripts. +- The difference is that `defer` keeps the relative script order and always executes after the document is fully loaded. In contrast, `async` script executes when it loads, without any conditions. + +Before inserting an external ` + + + + + diff --git a/1-js/2-first-steps/11-ifelse/2-check-standard/ifelse_task2@2x.png b/1-js/2-first-steps/11-ifelse/2-check-standard/ifelse_task2@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a4b948747dcbba001e147d5f38394970c28bfcd2 GIT binary patch literal 55361 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 w- + + + + + + + + + diff --git a/1-js/2-first-steps/11-ifelse/3-sign/solution.md b/1-js/2-first-steps/11-ifelse/3-sign/solution.md new file mode 100644 index 00000000..262a605c --- /dev/null +++ b/1-js/2-first-steps/11-ifelse/3-sign/solution.md @@ -0,0 +1,14 @@ + + +```js run +let value = prompt('Type a number', 0); + +if (value > 0) { + alert( 1 ); +} else if (value < 0) { + alert( -1 ); +} else { + alert( 0 ); +} +``` + diff --git a/1-js/2-first-steps/11-ifelse/3-sign/task.md b/1-js/2-first-steps/11-ifelse/3-sign/task.md new file mode 100644 index 00000000..0c5d0e00 --- /dev/null +++ b/1-js/2-first-steps/11-ifelse/3-sign/task.md @@ -0,0 +1,15 @@ +importance: 2 + +--- + +# Show the sign + +Using `if..else`, write the code which gets a number via `prompt` and then shows in `alert`: + +- `1`, if the value is greater than zero, +- `-1`, if less than zero, +- `0`, if equals zero. + +In this task we assume that the input is always a number. + +[demo src="if_sign"] diff --git a/1-js/2-first-steps/11-ifelse/4-check-login/ifelse_task.png b/1-js/2-first-steps/11-ifelse/4-check-login/ifelse_task.png new file mode 100644 index 0000000000000000000000000000000000000000..8b54dc83d570d8e3db98c661c7df409dec8cbd41 GIT binary patch literal 38919 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�CUf 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 {LIseYA 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 Sb7O%300006FfQHWtr& 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%0AIyslplXNB0OxyNO79yyE~58<`U}hajPlg`FcZ< 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 literal 0 HcmV?d00001 diff --git a/1-js/2-first-steps/11-ifelse/4-check-login/solution.md b/1-js/2-first-steps/11-ifelse/4-check-login/solution.md new file mode 100644 index 00000000..acfac25e --- /dev/null +++ b/1-js/2-first-steps/11-ifelse/4-check-login/solution.md @@ -0,0 +1,31 @@ + + +```js run demo +let userName = prompt('Who's there?', ''); + +if (userName == 'Admin') { + + let pass = prompt('Password?', ''); + + if (pass == 'TheMaster') { + alert( 'Welcome!' ); + } else if (pass == null || pass == '') { // (*) + alert( 'Canceled.' ); + } else { + alert( 'Wrong password' ); + } + +} else if (userName == null || userName == '') { // (**) + + alert( 'Canceled' ); + +} else { + + alert( "I don't know you" ); + +} +``` + +Please note the `if` check in lines `(*)` and `(**)`. Every browser except Safari returns `null` when the input is canceled, and Safari returns an empty string. So we must treat them same for compatibility. + +Also note the vertical indents inside the `if` blocks. They are technically not required, but make the code more readable. diff --git a/1-js/2-first-steps/11-ifelse/4-check-login/task.md b/1-js/2-first-steps/11-ifelse/4-check-login/task.md new file mode 100644 index 00000000..4b371a1d --- /dev/null +++ b/1-js/2-first-steps/11-ifelse/4-check-login/task.md @@ -0,0 +1,23 @@ +importance: 3 + +--- + +# Check the login + +Write the code which asks for a login with `prompt`. + +If the visitor enters `"Admin"`, then `prompt` for a password, if the input is an empty line or `key:Esc` -- show "Canceled.", if it's another string -- then show "I don't know you". + +The password is checked as follows: + +- If it equals "TheMaster", then show "Welcome!", +- Another string -- show "Wrong password", +- For an empty string or cancelled input, show "Canceled." + +The schema: + +![](ifelse_task.png) + +Please use nested `if` blocks. Mind the overall readability of the code. + +[demo] diff --git a/1-js/2-first-steps/11-ifelse/5-rewrite-if-question/solution.md b/1-js/2-first-steps/11-ifelse/5-rewrite-if-question/solution.md new file mode 100644 index 00000000..638ce81f --- /dev/null +++ b/1-js/2-first-steps/11-ifelse/5-rewrite-if-question/solution.md @@ -0,0 +1,6 @@ + + +```js +result = (a + b < 4) ? 'Below' : 'Over'; +``` + diff --git a/1-js/2-first-steps/11-ifelse/5-rewrite-if-question/task.md b/1-js/2-first-steps/11-ifelse/5-rewrite-if-question/task.md new file mode 100644 index 00000000..684e239f --- /dev/null +++ b/1-js/2-first-steps/11-ifelse/5-rewrite-if-question/task.md @@ -0,0 +1,16 @@ +importance: 5 + +--- + +# Rewrite 'if' into '?' + +Rewrite this `if` using the ternary operator `'?'`: + +```js +if (a + b < 4) { + result = 'Below'; +} else { + result = 'Over'; +} +``` + diff --git a/1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/solution.md b/1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/solution.md new file mode 100644 index 00000000..6d68e29d --- /dev/null +++ b/1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/solution.md @@ -0,0 +1,9 @@ + + +```js +let message = (login == 'Employee') ? 'Hello' : + (login == 'Director') ? 'Greetings' : + (login == '') ? 'No login' : + ''; +``` + diff --git a/1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/task.md b/1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/task.md new file mode 100644 index 00000000..91504cf4 --- /dev/null +++ b/1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/task.md @@ -0,0 +1,24 @@ +importance: 5 + +--- + +# Rewrite 'if..else' into '?' + +Rewrite `if..else` using multiple ternary operators `'?'`. + +For readability, it's recommended to split the code span over lines. + +```js +let message; + +if (login == 'Employee') { + message = 'Hello'; +} else if (login == 'Director') { + message = 'Greetings'; +} else if (login == '') { + message = 'No login'; +} else { + message = ''; +} +``` + diff --git a/1-js/2-first-steps/11-ifelse/article.md b/1-js/2-first-steps/11-ifelse/article.md new file mode 100644 index 00000000..499d1954 --- /dev/null +++ b/1-js/2-first-steps/11-ifelse/article.md @@ -0,0 +1,237 @@ +# Conditional operators: if, '?' + +Sometimes we need to perform different actions basing on a condition. + +There's an `if` operator for that and also the "question mark" operator: `"?"` for conditional evaluation. + +[cut] + +## The "if" operator + +The "if" operator gets a condition, evaluates it and -- if the result is `true` -- executes the code. + +For example: + +```js run +let year = prompt('In which year was ECMAScript-2015 specification published?', ''); + +*!* +if (year == 2015) alert( 'You are right!' ); +*/!* +``` + +In the example above, the condition is a simple equality check: `year == 2015`, but it can be much more complex. + +If there's more than one command to execute -- we can use a code block in figure brackets: + +```js +if (year == 2015) { + alert( "That's correct!" ); + alert( "You're so smart!" ); +} +``` + +It is recommended to use figure brackets every time with `if`, even if there's only one command. That improves readability. + +## Boolean conversion + +The `if (…)` operator evaluates the condition in brackets and converts it to boolean type. + +Let's recall the rules. In the logical context: + +- A number `0`, an empty string `""`, `null`, `undefined` and `NaN` are `false`, +- Other values -- `true`. + +So, the code under this condition would never execute: + +```js +if (0) { // 0 is falsy + ... +} +``` + +...And inside this condition -- always works: + +```js +if (1) { // 1 is truthy + ... +} +``` + +We can also pass a pre-evaluated logical value to `if`, like here: + +```js +let cond = (year == 2015); // equality evaluates to true or false + +if (cond) { + ... +} +``` + +## The "else" clause + +The `if` operator may contain an optional "else" block. It executes when the condition is wrong. + +For example: +```js run +let year = prompt('In which year was ECMAScript-2015 specification published?', ''); + +if (year == 2015) { + alert( 'You guessed it right!' ); +} else { + alert( 'How can you be so wrong?' ); // any value except 2015 +} +``` + +## Several conditions: "else if" + +Sometimes we'd like to test several variants of a condition. There's an `else if` clause for that. + +For example: + +```js run +let year = prompt('In which year was ECMAScript-2015 specification published?', ''); + +if (year < 2015) { + alert( 'Too early...' ); +} else if (year > 2015) { + alert( 'Too late' ); +} else { + alert( 'Exactly!' ); +} +``` + +In the code above JavaScript first checks `year < 2015`, if it is falsy then goes to the next condition `year > 2015`. Any number of `else if` may follow with an optional last `else`. + +## Ternary operator '?' + +Sometimes we need to assign a variable depending on a condition. + +For instance: + +```js run no-beautify +let hasAccess; +let age = prompt('How old are you?', ''); + +*!* +if (age > 18) { + hasAccess = true; +} else { + hasAccess = false; +} +*/!* + +alert(hasAccess); +``` + +The so called "ternary" or "question mark" operator allows to do that shorter and simpler. + +The operator is represented by a question mark `"?"`. The formal term "ternary" means that the operator has 3 operands. It is actually the one and only operator in JavaScript which has that many. + +The syntax is: +```js +let result = condition ? value1 : value2 +``` + +The `condition` is evaluated, if it's truthy then `value1` is returned, otherwise -- `value2`. + +For example: + +```js +let hasAccess = (age > 18) ? true : false; +``` + +We can omit brackets around `age > 14`, because the question mark operator has a low precedence. It executes after comparisons, so: + +```js +// the same +let hasAccess = age > 18 ? true : false; +``` + +...But brackets make the code more readable. So it's recommended to put them. + +````smart +In the described case it is possible to evade the question mark operator, because the comparison by itself returns `true/false`: + +```js +// the same +let hasAccess = age > 18; +``` +```` + +## Multiple '?' + +A sequence of question mark `"?"` operators allows to return a value depending on more than one condition. + +For instance: +```js run +let age = prompt('age?', 18); + +let message = (age < 3) ? 'Hi, baby!' : + (age < 18) ? 'Hello!' : + (age < 100) ? 'Greetings!' : + 'What an unusual age!'; + +alert( message ); +``` + +It may be difficult at first to grasp what's going on. But looking more carefully we note that it's just an ordinary sequence of tests. + +1. The first question mark checks for `age < 3`. +2. If true -- returns `'Hi, baby!'`, otherwise -- goes to the right side of the colon `":"` and checks for `age < 18`. +3. If that's true -- returns `'Hello!'`, otherwise checks for `age < 100` and returns `'Greetings!'` if that is so... +4. At last, if all checks are falsy, the `message` becomes `'What an unusual age!'`. + +The same logic using `if..else`: + +```js +if (age < 3) { + message = 'Hi, baby!'; +} else if (a < 18) { + message = 'Hello!'; +} else if (age < 100) { + message = 'Greetings!'; +} else { + message = 'What an unusual age!'; +} +``` + +## Non-traditional use of '?' + +Sometimes the question mark `'?'` is used as a replacement for `if`: + +```js run no-beautify +let company = prompt('Which company created JavaScript?', ''); + +*!* +(company == 'Netscape') ? + alert('Right!') : alert('Wrong.'); +*/!* +``` + +Depending on the condition `company == 'Netscape'`, either the first or the second part after `"?"` gets executed and shows the alert. + +We don't assign a result to a variable here, cause the `alert` doesn't return anything anyway, our purpose is only to execute it. + +**It is not recommended to use the question mark operator in this way.** + +The notation seem to be shorter than `if`, that appeals to some programmers. But it is less readable. + +Here's the same with `if` for comparison: + +```js run no-beautify +let company = prompt('Which company created JavaScript?', ''); + +*!* +if (company == 'Netscape') { + alert('Right!'); +} else { + alert('Wrong.'); +} +*/!* +``` + +Our eyes scan the code vertically. The constructs which span several lines are easier to understand than a long horizontal instruction set. + +The idea of a question mark `'?'` is to return one or another value depending on the condition. Please use it for exactly that. There's `if` to execute different branches of the code. + diff --git a/1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/solution.md b/1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/solution.md new file mode 100644 index 00000000..8869d32e --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/solution.md @@ -0,0 +1,6 @@ +The answer is `2`, that's the first truthy value. + +```js run +alert( null || 2 || undefined ); +``` + diff --git a/1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/task.md b/1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/task.md new file mode 100644 index 00000000..eda8c905 --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/task.md @@ -0,0 +1,12 @@ +importance: 5 + +--- + +# What's the result of OR? + +What the code below is going to output? + +```js +alert( null || 2 || undefined ); +``` + diff --git a/1-js/2-first-steps/12-logical-ops/2-alert-or/solution.md b/1-js/2-first-steps/12-logical-ops/2-alert-or/solution.md new file mode 100644 index 00000000..aa388e02 --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/2-alert-or/solution.md @@ -0,0 +1,13 @@ +The answer: first `1`, then `2`. + +```js run +alert( alert(1) || 2 || alert(3) ); +``` + +The call to `alert` does not return a value. Or, in other words, it returns `undefined`. + +1. The first OR `||` evaluates it's left operand `alert(1)`. That shows the first message with `1`. +2. The `alert` returns `undefined`, so OR goes on to the second operand in it's search of a truthy value. +3. The second operand `2` is truthy, so the execution is halted, `2` is returned and then shown by the outer alert. + +There will be no `3`, because the evaluation does not reach `alert(3)`. diff --git a/1-js/2-first-steps/12-logical-ops/2-alert-or/task.md b/1-js/2-first-steps/12-logical-ops/2-alert-or/task.md new file mode 100644 index 00000000..bc622abf --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/2-alert-or/task.md @@ -0,0 +1,12 @@ +importance: 3 + +--- + +# What's the result of OR'ed alerts? + +What the code below will output? + +```js +alert( alert(1) || 2 || alert(3) ); +``` + diff --git a/1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/solution.md b/1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/solution.md new file mode 100644 index 00000000..5c2455ef --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/solution.md @@ -0,0 +1,6 @@ +The answer: `null`, because it's the first falsy value from the list. + +```js run +alert( 1 && null && 2 ); +``` + diff --git a/1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/task.md b/1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/task.md new file mode 100644 index 00000000..53ec7874 --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/task.md @@ -0,0 +1,12 @@ +importance: 5 + +--- + +# What is the result of AND? + +What this code is going to show? + +```js +alert( 1 && null && 2 ); +``` + diff --git a/1-js/2-first-steps/12-logical-ops/4-alert-and/solution.md b/1-js/2-first-steps/12-logical-ops/4-alert-and/solution.md new file mode 100644 index 00000000..b6fb10d7 --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/4-alert-and/solution.md @@ -0,0 +1,10 @@ +The answer: `1`, and then `undefined`. + +```js run +alert( alert(1) && alert(2) ); +``` + +The call to `alert` returns `undefined` (it just shows a message, so there's no meaningful return). + +Because of that, `&&` evaluates the left operand (outputs `1`), and immediately stops, because `undefined` is a falsy value. And `&&` looks for a falsy value and returns it, so it's done. + diff --git a/1-js/2-first-steps/12-logical-ops/4-alert-and/task.md b/1-js/2-first-steps/12-logical-ops/4-alert-and/task.md new file mode 100644 index 00000000..69f877b9 --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/4-alert-and/task.md @@ -0,0 +1,12 @@ +importance: 3 + +--- + +# What is the result of AND'ed alerts? + +What will this code show? + +```js +alert( alert(1) && alert(2) ); +``` + diff --git a/1-js/2-first-steps/12-logical-ops/5-alert-and-or/solution.md b/1-js/2-first-steps/12-logical-ops/5-alert-and-or/solution.md new file mode 100644 index 00000000..32a8ccf2 --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/5-alert-and-or/solution.md @@ -0,0 +1,16 @@ +The answer: `3`. + +```js run +alert( null || 2 && 3 || 4 ); +``` + +The precedence of AND `&&` is higher than `||`, so it executes first. + +The result of `2 && 3 = 3`, so the expression becomes: + +``` +null || 3 || 4 +``` + +Now the result if the first truthy value: `3`. + diff --git a/1-js/2-first-steps/12-logical-ops/5-alert-and-or/task.md b/1-js/2-first-steps/12-logical-ops/5-alert-and-or/task.md new file mode 100644 index 00000000..4b2ad046 --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/5-alert-and-or/task.md @@ -0,0 +1,12 @@ +importance: 5 + +--- + +# The result of OR AND OR + +What will be the result? + +```js +alert( null || 2 && 3 || 4 ); +``` + diff --git a/1-js/2-first-steps/12-logical-ops/6-check-if-in-range/solution.md b/1-js/2-first-steps/12-logical-ops/6-check-if-in-range/solution.md new file mode 100644 index 00000000..87c733b2 --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/6-check-if-in-range/solution.md @@ -0,0 +1,6 @@ + + +```js +if (age >= 14 && age <= 90) +``` + diff --git a/1-js/2-first-steps/12-logical-ops/6-check-if-in-range/task.md b/1-js/2-first-steps/12-logical-ops/6-check-if-in-range/task.md new file mode 100644 index 00000000..cc00ca9f --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/6-check-if-in-range/task.md @@ -0,0 +1,9 @@ +importance: 3 + +--- + +# Check the range between + +Write an "if" condition to check that `age` is between `14` and `90` inclusively. + +"Inclusively" means that `age` can reach the edges `14` or `90`. diff --git a/1-js/2-first-steps/12-logical-ops/7-check-if-out-range/solution.md b/1-js/2-first-steps/12-logical-ops/7-check-if-out-range/solution.md new file mode 100644 index 00000000..d1946a96 --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/7-check-if-out-range/solution.md @@ -0,0 +1,12 @@ +The first variant: + +```js +if (!(age >= 14 && age <= 90)) +``` + +The second variant: + +```js +if (age < 14 || age > 90) +``` + diff --git a/1-js/2-first-steps/12-logical-ops/7-check-if-out-range/task.md b/1-js/2-first-steps/12-logical-ops/7-check-if-out-range/task.md new file mode 100644 index 00000000..7c22d6ad --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/7-check-if-out-range/task.md @@ -0,0 +1,9 @@ +importance: 3 + +--- + +# Check the range outside + +Write an `if` condition to check that `age` is NOT between 14 and 90 inclusively. + +Create two variants: the first one using NOT `!`, the second one -- without it. diff --git a/1-js/2-first-steps/12-logical-ops/8-if-question/solution.md b/1-js/2-first-steps/12-logical-ops/8-if-question/solution.md new file mode 100644 index 00000000..21050975 --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/8-if-question/solution.md @@ -0,0 +1,20 @@ +The answer: the first and the third will execute. + +Details: + +```js run +// Runs. +// The result of -1 || 0 = -1, truthy +if (-1 || 0) alert( 'first' ); + +// Doesn't run +// -1 && 0 = 0, falsy +if (-1 && 0) alert( 'second' ); + +// Executes +// Operator && has a higher precedence than || +// so -1 && 1 executes first, giving us the chain: +// null || -1 && 1 -> null || 1 -> 1 +if (null || -1 && 1) alert( 'third' ); +``` + diff --git a/1-js/2-first-steps/12-logical-ops/8-if-question/task.md b/1-js/2-first-steps/12-logical-ops/8-if-question/task.md new file mode 100644 index 00000000..f824779b --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/8-if-question/task.md @@ -0,0 +1,16 @@ +importance: 5 + +--- + +# A question about "if" + +Which of these `alert`s are going to execute? + +What will be the results of the expressions inside `if(...)`? + +```js +if (-1 || 0) alert( 'first' ); +if (-1 && 0) alert( 'second' ); +if (null || -1 && 1) alert( 'third' ); +``` + diff --git a/1-js/2-first-steps/12-logical-ops/article.md b/1-js/2-first-steps/12-logical-ops/article.md new file mode 100644 index 00000000..4bc82f4f --- /dev/null +++ b/1-js/2-first-steps/12-logical-ops/article.md @@ -0,0 +1,308 @@ +# Logical operators + +There are three logical operators in JavaScript: `||` (OR), `&&` (AND), `!` (NOT). + +Although they are called "logical", they can be applied to values of any type, not only boolean. The result can also be of any type. + +Let's see the details. + +[cut] + +## || (OR) + +The "OR" operator is represented with two vertical line symbols: + +```js +result = a || b; +``` + +In classical programming, logical OR is meant to manipulate boolean values. If any of it's arguments is `true`, then it returns `true`, otherwise -- returns `false`. + +In JavaScript the operator is a little bit more tricky and powerful. But first let's see what happens with logical values. + +A table of possible logical combinations: + +```js run +alert( true || true ); // true +alert( false || true ); // true +alert( true || false ); // true +alert( false || false ); // false +``` + +As we can see, the result is always `true` except for the case when both operands are `false`. + +If an operand is not boolean, then it's converted to boolean for the evaluation. + +For instance, a number `1` is treated as `true`, a number `0` -- as `false`: + +```js run +if (1 || 0) { // works just like if( true || false ) + alert( 'truthy!' ); +} +``` + +Most of time, OR `||` is used in the `if` expression to test if *any* of given conditions is correct. + +For example: + +```js run +let hour = 9; + +*!* +if (hour < 10 || hour > 18) { +*/!* + alert( 'The office is closed.' ); +} +``` + +We can pass more conditions: + +```js run +let hour = 12; +let isWeekend = true; + +if (hour < 10 || hour > 18 || isWeekend) { + alert( 'The office is closed.' ); // it is weekend +} +``` + +## OR seeks the first truthy value + +The logic described above is somewhat classical. Now let's bring in the "extra" features of JavaScipt. + +The extended algorithm works as follows. + +Given multiple OR'ed values: + +```js +result = value1 || value2 || value3; +``` + +The OR `"||"` operator is doing the following: + +- Evalutes operands from left to right. +- For each value converts it to boolean and stops immediately returning it if it's true. +- The value is returned in it's original form, without the conversion. + +In other words, it returns the first truthy value or the last one if no such value found. + +For instance: + +```js run +alert( 1 || 0 ); // 1 (is truthy) +alert( true || 'no matter what' ); // (true is truthy) + +alert( null || 1 ); // 1 (1 is the first truthy) +alert( null || 0 || 1 ); // 1 (the first truthy) +alert( undefined || null || 0 ); // 0 (all falsy, returns the last value) +``` + +This logic does not contradict to what was spoken above. If you check this behavior with the boolean table, you see that it still works the same. + +But there leads to some interesting usages compared to a "pure, classical, boolean-only OR". + +1. **Getting the first truthy value from the list of variables or expressions.** + + Imagine we have several variables, which can either contain the data or be `null/undefined`. And we need to choose the first one with data. + + Using OR `||` for that: + + ```js run + let currentUser = null; + let defaultUser = "John"; + + *!* + let name = currentUser || defaultUser || "unnamed"; + */!* + + alert( name ); // selects "John" – the first truthy value + ``` + + If both `currentUser` and `defaultUser` were falsy then `"unnamed"` would be the result. +2. **Short-circuit evaluation.** + + Operands can be not only values, but arbitrary expressions. OR evaluates and tests them from left to right. The evaluation stops when a truthy value is reached, and the value is returned. The process is called "a short-circuit evaluation", because it goes as short as possible from left to right. + + This is clearly seen when the expression given as the second argument has a side effect. Like a variable assignment. + + If we run the example below, `x` would not get assigned: + + ```js run no-beautify + let x; + + *!*true*/!* || (x = 1); + + alert(x); // undefined, because (x = 1) not evaluated + ``` + + ...And if the first argument were `false`, then `OR` would goes on and evaluate the second one thus running the assignment: + + ```js run no-beautify + let x; + + *!*false*/!* || (x = 1); + + alert(x); // 1 + ``` + + An assignment is a simple case, other side effects can be involved. + + As we can see, such use case is a "shorter way to do `if`". The first operand is converted to boolean and if it's false then the second one is evaluated. + + Most of time it's better to use `if` for that for code clarity. + +## && (AND) + +The AND operator is represented with two ampersands `&&`: + +```js +result = a && b; +``` + +In classic programming AND returns `true` if both operands are truthy and `false` -- otherwise: + +```js run +alert( true && true ); // true +alert( false && true ); // false +alert( true && false ); // false +alert( false && false ); // false +``` + +An example with `if`: + +```js run +let hour = 12; +let minute = 30; + +if (hour == 12 && minute == 30) { + alert( 'Time is 12:30' ); +} +``` + +Just as for OR, any value is allowed as an operand of AND and gets converted to a boolean in the process: + +```js run +if (1 && 0) { // evaluated as true && false + alert( "won't work, because the result is falsy" ); +} +``` + + +## AND seeks the first falsy value + +Given multiple AND'ed values: + +```js +result = value1 && value2 && value3; +``` + +The AND `"&&"` operator is doing the following: + +- Evalutes operands from left to right. +- For each value converts it to a boolean. If the result is `false`, stops and returns it without conversion. +- If values finished (all are truthy), returns the last one. + +In other words, AND returns the first falsy value or the last one if none found. + +The rules above are similar to OR. The difference is that AND returns the first *falsy* value while OR returns the first *truthy* one. + +Examples: + +```js run +// if the first operand is truthy, +// && returns the second one. +alert( 1 && 0 ); // 0 +alert( 1 && 5 ); // 5 + +// now the first operand is falsy, +// it is returned, and the second one is ignored +alert( null && 5 ); // null +alert( 0 && "no matter what" ); // 0 +``` + +We can also pass several values in a row. See how the first falsy one is returned: + +```js run +alert( 1 && 2 && null && 3 ); // null +``` + +...And now when all of them are truthy: + +```js run +alert( 1 && 2 && 3 ); // 3, the last one +``` + +````smart header="AND `&&` executes before OR `||`" +The precedence of the AND `&&` operator is higher than OR `||`, so it executes before OR. + +In the code below `1 && 0` is calculated first: + +```js run +alert( 5 || 1 && 0 ); // 5 +``` +```` + +Just like OR, the AND `&&` operator can sometimes replace `if`. + +For instance: + +```js run +let x = 1; + +(x > 0) && alert( 'Greater than zero!' ); +``` + +The action in the right part of `&&` would execute only if the evaluation reaches it. That is: only if `(x > 0)` is true. + +So we basically have an analogue for: + +```js run +let x = 1; + +if (x > 0) { + alert( 'Greater than zero!' ); +} +``` + +The variant with `&&` appears to be shorter. But `if` is more obvious and tends to be a little bit more readable. + +So it is recommended to use every construct for it's purpose. Use `if` if we want if. And use `&&` if we want AND. + +## ! (NOT) + +The boolean NOT operator is represented with an exclamation sign `"!"`. + +The syntax is one of the simplest: + +```js +result = !value; +``` + +The operator accepts a single argument and does the following: + +1. Converts the operand to boolean type: `true/false`. +2. Returns an inverse value. + +For instance: + +```js run +alert( !true ); // false +alert( !0 ); // true +``` + +A double NOT is sometimes used for converting a value to boolean type: + +```js run +alert( !!"non-empty string" ); // true +alert( !!null ); // false +``` + +That is: the first NOT converts the value to boolean and returns the inverse, and the second NOT inverses it again, so we have a plain value-to-boolean conversion. + +There's a little more verbose to do the same -- a built-in `Boolean` function: + +```js run +alert( Boolean("non-empty string") ); // true +alert( Boolean(null) ); // false +``` + diff --git a/1-js/2-first-steps/13-while-for/1-loop-last-value/solution.md b/1-js/2-first-steps/13-while-for/1-loop-last-value/solution.md new file mode 100644 index 00000000..ef1da254 --- /dev/null +++ b/1-js/2-first-steps/13-while-for/1-loop-last-value/solution.md @@ -0,0 +1,26 @@ +The answer: `1`. + +```js run +let i = 3; + +while (i) { + alert( i-- ); +} +``` + +Every loop iteration decreases `i` by `1`. The check `while(i)` stops the loop when `i = 0`. + +Hence, the steps of the loop make the following sequence ("loop unrolled"): + +```js +let i = 3; + +alert(i--); // shows 3, decreases i to 2 + +alert(i--) // shows 2, decreases i to 1 + +alert(i--) // shows 1, decreases i to 0 + +// done, while(i) check stops the loop +``` + diff --git a/1-js/2-first-steps/13-while-for/1-loop-last-value/task.md b/1-js/2-first-steps/13-while-for/1-loop-last-value/task.md new file mode 100644 index 00000000..bb57126c --- /dev/null +++ b/1-js/2-first-steps/13-while-for/1-loop-last-value/task.md @@ -0,0 +1,16 @@ +importance: 3 + +--- + +# Last loop value + +What is be the last value alerted by this code? Why? + +```js +let i = 3; + +while (i) { + alert( i-- ); +} +``` + diff --git a/1-js/2-first-steps/13-while-for/2-which-value-while/solution.md b/1-js/2-first-steps/13-while-for/2-which-value-while/solution.md new file mode 100644 index 00000000..540a0258 --- /dev/null +++ b/1-js/2-first-steps/13-while-for/2-which-value-while/solution.md @@ -0,0 +1,31 @@ +The task demonstrates how postfix/prefix forms can lead to different results when used in comparisons. + +1. **From 1 to 4** + + ```js run + let i = 0; + while (++i < 5) alert( i ); + ``` + + The first value is `i=1`, because `++i` first increments `i` and then returns the new value. So the first comparison is `1 < 5` and the `alert` shows `1`. + + Then follow `2,3,4…` -- the values show up one after another. The comparison always uses the incremented value, because `++` is before the variable. + + Finally, `i=4` is incremented to `5`, the comparison `while(5 < 5)` fails and the loop stops. So `5` is not shown. +2. **From 1 to 5** + + ```js run + let i = 0; + while (i++ < 5) alert( i ); + ``` + + The first value is again `i=1`. The postfix form of `i++` increments `i` and then returns the *old* value, so the comparison `i++ < 5` will use `i=0` (contrary to `++i < 5`). + + But the `alert` call is separate. It's another statement which executes after the increment and the comparison. So it gets the current `i=1`. + + Then follow `2,3,4…` + + Let's stop on `i=4`. The prefix form `++i` would increment it and use `5` in the comparison. But here we have the postfix form `i++`. So it increments `i` to `5`, but returns the old value. Hence the comparison is actually `while(4 < 5)` -- true, and the control goes on to `alert`. + + The value `i=5` is the last one, because on the next step `while(5 < 5)` is false. + diff --git a/1-js/2-first-steps/13-while-for/2-which-value-while/task.md b/1-js/2-first-steps/13-while-for/2-which-value-while/task.md new file mode 100644 index 00000000..0d10f6ce --- /dev/null +++ b/1-js/2-first-steps/13-while-for/2-which-value-while/task.md @@ -0,0 +1,23 @@ +importance: 4 + +--- + +# Which values shows the while? + +For every loop, scribe down which values it shows, in your opinion. + +And then compare with the answer. + +1. The prefix form `++i`: + + ```js + let i = 0; + while (++i < 5) alert( i ); + ``` +2. The postfix form `i++` + + ```js + let i = 0; + while (i++ < 5) alert( i ); + ``` + diff --git a/1-js/2-first-steps/13-while-for/3-which-value-for/solution.md b/1-js/2-first-steps/13-while-for/3-which-value-for/solution.md new file mode 100644 index 00000000..3255310a --- /dev/null +++ b/1-js/2-first-steps/13-while-for/3-which-value-for/solution.md @@ -0,0 +1,17 @@ +**The answer: from `0` to `4` in both cases.** + +```js run +for (let i = 0; i < 5; ++i) alert( i ); + +for (let i = 0; i < 5; i++) alert( i ); +``` + +That can be easily deducted from the algorithm of `for`: + +1. Execute once `i=0` before everything. +2. Check the condition `i<5` +3. If `true` -- execute the loop body `alert(i)`, and then `i++` + +The increment `i++` is separated from the condition check (2). That's just another statement. + +The value returned by the increment is not used here, so there's no difference between `i++` and `++i`. diff --git a/1-js/2-first-steps/13-while-for/3-which-value-for/task.md b/1-js/2-first-steps/13-while-for/3-which-value-for/task.md new file mode 100644 index 00000000..c895f88c --- /dev/null +++ b/1-js/2-first-steps/13-while-for/3-which-value-for/task.md @@ -0,0 +1,21 @@ +importance: 4 + +--- + +# Which values get shown by the "for" loop? + +For each loop scribe down which values it is going to show. + +Then compare with the answer. + +1. The postfix form: + + ```js + for (let i = 0; i < 5; i++) alert( i ); + ``` +2. The prefix form: + + ```js + for (let i = 0; i < 5; ++i) alert( i ); + ``` + diff --git a/1-js/2-first-steps/13-while-for/4-for-even/solution.md b/1-js/2-first-steps/13-while-for/4-for-even/solution.md new file mode 100644 index 00000000..e8e66bb4 --- /dev/null +++ b/1-js/2-first-steps/13-while-for/4-for-even/solution.md @@ -0,0 +1,11 @@ + + +```js run demo +for (let i = 2; i <= 10; i++) { + if (i % 2 == 0) { + alert( i ); + } +} +``` + +We use the "modulo" operator `%` to get the remainder and check for the evenness here. diff --git a/1-js/2-first-steps/13-while-for/4-for-even/task.md b/1-js/2-first-steps/13-while-for/4-for-even/task.md new file mode 100644 index 00000000..ff34e7e4 --- /dev/null +++ b/1-js/2-first-steps/13-while-for/4-for-even/task.md @@ -0,0 +1,9 @@ +importance: 5 + +--- + +# Output even numbers in the loop + +Use the `for` loop to output even numbers from `2` to `10`. + +[demo] diff --git a/1-js/2-first-steps/13-while-for/5-replace-for-while/solution.md b/1-js/2-first-steps/13-while-for/5-replace-for-while/solution.md new file mode 100644 index 00000000..612cf559 --- /dev/null +++ b/1-js/2-first-steps/13-while-for/5-replace-for-while/solution.md @@ -0,0 +1,10 @@ + + +```js run +let i = 0; +while (i < 3) { + alert( `number ${i}!` ); + i++; +} +``` + diff --git a/1-js/2-first-steps/13-while-for/5-replace-for-while/task.md b/1-js/2-first-steps/13-while-for/5-replace-for-while/task.md new file mode 100644 index 00000000..a62c9af3 --- /dev/null +++ b/1-js/2-first-steps/13-while-for/5-replace-for-while/task.md @@ -0,0 +1,14 @@ +importance: 5 + +--- + +# Replace "for" with "while" + +Rewrite the code changing the `for` loop to `while` without altering it's behavior (the output should stay same). + +```js run +for (let i = 0; i < 3; i++) { + alert( `number ${i}!` ); +} +``` + diff --git a/1-js/2-first-steps/13-while-for/6-repeat-until-correct/solution.md b/1-js/2-first-steps/13-while-for/6-repeat-until-correct/solution.md new file mode 100644 index 00000000..dce31abc --- /dev/null +++ b/1-js/2-first-steps/13-while-for/6-repeat-until-correct/solution.md @@ -0,0 +1,15 @@ + +```js run demo +let num; + +do { + num = prompt("Enter a number greater than 100?", 0); +} while (num <= 100 && num); +``` + +The loop `do..while` repeats while both checks are truthy: + +1. The check for `num <= 100` -- that is, the entered value is still not greater than `100`. +2. The check for a truthiness of `num` checks that `num != null` and `num != ""` simultaneously. + +P.S. By the way, if `num` is `null` then `num <= 100` would return `false`, not `true`! diff --git a/1-js/2-first-steps/13-while-for/6-repeat-until-correct/task.md b/1-js/2-first-steps/13-while-for/6-repeat-until-correct/task.md new file mode 100644 index 00000000..729835e9 --- /dev/null +++ b/1-js/2-first-steps/13-while-for/6-repeat-until-correct/task.md @@ -0,0 +1,14 @@ +importance: 5 + +--- + +# Repeat until the input is incorrect + +Write a loop which prompts for a number greater than `100`. If the visitor enters another number -- ask him to repeat the input, and so on. + +The loop must ask for a number until either the visitor enters a number greater than `100` or cancels the input/enters an empty line. + +Here we can assume that the visitor only inputs numbers. There's no need to implement the special handling for a non-numeric input in this task. + +[demo] + diff --git a/1-js/2-first-steps/13-while-for/7-list-primes/solution.md b/1-js/2-first-steps/13-while-for/7-list-primes/solution.md new file mode 100644 index 00000000..5234fa44 --- /dev/null +++ b/1-js/2-first-steps/13-while-for/7-list-primes/solution.md @@ -0,0 +1,28 @@ +There are many algorithms for this task. + +Let's use a nested loop: + +```js +For each i in the interval { + check if i has a divisor from 1..i + if yes => the value is not a prime + if no => the value is a prime, show it +} +``` + +The code using a label: + +```js run +nextPrime: +for (let i = 2; i < 10; i++) { // for each i... + + for (let j = 2; j < i; j++) { // look for a divisor.. + if (i % j == 0) continue nextPrime; // not a prime, go next i + } + + alert( i ); // a prime +} +``` + +Surely, there's a lot of space to opimize it. Like, we could look for the divisors from `2` to square root of `i`. But anyway, if we want to be really efficient for large intervals, we need change the approach and rely heavily on advanced maths and algorithms like [Quadratic sieve](https://en.wikipedia.org/wiki/Quadratic_sieve), [General number field sieve](https://en.wikipedia.org/wiki/General_number_field_sieve) etc. + diff --git a/1-js/2-first-steps/13-while-for/7-list-primes/task.md b/1-js/2-first-steps/13-while-for/7-list-primes/task.md new file mode 100644 index 00000000..c7945e29 --- /dev/null +++ b/1-js/2-first-steps/13-while-for/7-list-primes/task.md @@ -0,0 +1,18 @@ +importance: 3 + +--- + +# Output prime numbers + +An integer number greater than `1` is called a [prime](https://en.wikipedia.org/wiki/Prime_number) if it cannot be not divided without a remainder by anything except `1` and itself. + +In other words, `n>1` is a prime if the result of it's division by anything except `1` and `n` is not integer. + +For example, `5` is a prime, because it cannot be divided without a remainder by `2`, `3` and `4`. + +**Write the code which outputs prime numbers in the interval from `2` to `10`.** + +The result will be `2,3,5,7`. + +P.S. The code should be easily modifiable for other intervals. + diff --git a/1-js/2-first-steps/13-while-for/article.md b/1-js/2-first-steps/13-while-for/article.md new file mode 100644 index 00000000..77e44b17 --- /dev/null +++ b/1-js/2-first-steps/13-while-for/article.md @@ -0,0 +1,371 @@ +# Loops: while and for + +We often have a need to perform similar actions many times in a row. + +For example, when we need to output goods from the list one after another. Or just run the same code for each number from 1 to 10. + +*Loops* are a way to repeat the same part of code multiple times. + +[cut] + +## The "while" loop + +The `while` loop has the following syntax: + +```js +while (condition) { + // code ("loop body") +} +``` + +While the `condition` is `true` -- the `code` from the loop body is executed. + +For instance, the loop below outputs `i` while `i<3`: + +```js run +let i = 0; +while (i < 3) { // shows 0, then 1, then 2 + alert( i ); + i++; +} +``` + +There's a special term *iteration* for each loop run. The loop in the example above makes 3 iterations. + +If there were no `i++` in the example above, the loop would repeat (in theory) forever, eating 100% CPU. In practice, the browser would show a message about a "hanging" script and let the user stop it. + +The `while` converts `condition` to a logical value. It can be any expression, not just a comparison. + +For instance, the shorter way to write `while (i!=0)` could be `while (i)`: + +```js run +let i = 3; +*!* +while (i) { // when i becomes 0, the condition is falsy and the loop stops +*/!* + alert( i ); + i--; +} +``` + +````smart header="Brackes are not required for a single-line body" +If the loop body has a single statement, we can omit the brackets `{…}`: + +```js run +let i = 3; +*!* +while (i) alert(i--); +*/!* +``` +```` + +## The "do..while" loop + +The condition check can be moved *below* the loop body using the `do..while` syntax: + +```js +do { + // loop body +} while (condition); +``` + +The loop will first execute the body and then check the condition. + +For example: + +```js run +let i = 0; +do { + alert( i ); + i++; +} while (i < 3); +``` + +This form of syntax is rarely used, because the ordinary `while` is more obvious. We don't need to scroll down the code looking for the condition. + +## The "for" loop + +The `for` loop is actually the most often used one. + +It looks like this: + +```js +for (begin; condition; step) { + // ... loop body ... +} +``` + +Let's see these parts in an example. The loop below runs `alert(i)` for `i` from `0` up to (but not including) `3`: + +```js run +let i; + +for (i = 0; i < 3; i++) { // shows 0, then 1, then 2 + alert( i ); +} +``` + +Let's split the last example into parts: + +begin: `i=0` +: Executes once upon entering the loop. + +condition: `i<3` +: Checked before every loop iteration, if fails the loop stops. + +body: `alert(i)` +: Runs again and again while the condition is truthy + +step: `i++` +: Executes after the body on each iteration, but before the condition check. + +The execution flow is: +``` +Begin + → (if condition → run body and run step) + → (if condition → run body and run step) + → ... repeat until the condition is falsy. +``` + +````smart header="Inline variable declaration" +We can declare a "counter" variable right in the beginning of the loop. + +```js run no-beautify +for (*!*let*/!* i = 0; i < 3; i++) { + alert(i); // 0, 1, 2 +} +``` + +The variable will be visible only inside the loop. +```` + +## Skipping parts + +Any part of the `for` can be skipped. + +For example, we can omit `begin` if we don't need to do anything at the loop start. + +Like here: + +```js run +let i = 0; + +for (; i < 3; i++) { + alert( i ); // 0, 1, 2 +} +``` + +It would work same as `for(let i=0; ...)`. + +We can also remove the `step` part: + +```js run +let i = 0; + +for (; i < 3;) { + alert( i ); + // the loop became identical to while (i<3) +} +``` + +We can actually remove everything, thus creating an infinite loop: + +```js +for (;;) { + // repeats without limits +} +``` + +Please note that the semicolons `;` must present, otherwise it would be a syntax error. + +```smart header="`for..in` and `for..of`" +There are special constructs: `for..in` and `for..of` for more advanced iterations over objects. + +We'll get to them later, in chapters about objects. +``` + +## Breaking the loop + +Normally the loop exists when the condition becomes falsy. + +But we can force the exit at any moment. There's a special `break` directive for that. + +For example, this code below asks user for numbers and breaks if no number entered: + +```js +let sum = 0; + +while (true) { + + let value = +prompt("Enter a number", ''); + +*!* + if (!value) break; // (*) +*/!* + + sum += value; + +} +alert( 'Sum: ' + sum ); +``` + +The `break` directive is activated in the line `(*)` if the user enters an empty line or cancels the input. It stops the loop immediately, passing the control to the first line after it's loop. Namely, `alert`. + +The composition: "infinite loop + break as needed" is a great thing for situations when the condition must be checked not in beginning/end of the loop, but in the middle. Or even in several places of the body. + +## Continue to the next iteration [#continue] + +The `continue` directive is a "lighter version" of `break`. It doesn't stop the whole loop. Instead if stops the current iteration and forces the loop to start a new one (if the condition allows). + +We can use it if we're done on the current iteration and would like to move on to the next. + +The loop above uses `continue` to output only odd values: + +```js run no-beautify +for (let i = 0; i < 10; i++) { + + // if true, skip the remaining part of the body + *!*if (i % 2 == 0) continue;*/!* + + alert(i); // 1, then 3, 5, 7, 9 +} +``` + +For even values of `i` the `continue` directive stops body execution, passing the control to the next iteration of `for` (with the next number). So the `alert` is only called for odd values. + +````smart header="The directive `continue` helps to decrease nesting level" +A loop for odd-only values could look like this: + +```js +for (let i = 0; i < 10; i++) { + + if (i % 2) { + alert( i ); + } + +} +``` + +From the technical point of view it's identical. Surely, we can just wrap the code in the `if` block instead of `continue`. + +But as a side-effect we got one more figure brackets nesting level. If the code inside `if` is longer than a few lines, that may decrease the overall readability. +```` + +````warn header="No `break/continue` to the right side of '?'" +Please note that syntax constructs that are not expressions cannot be used in `'?'`. In particular, directives `break/continue` are disallowed there. + +For example, if one we took this code: + +```js +if (i > 5) { + alert(i); +} else { + continue; +} +``` + +...And rewrote it using a question mark: + + +```js no-beautify +(i > 5) ? alert(i) : *!*continue*/!*; // continue not allowed here +``` + +...Then it won't work. The code like this will give a syntax error: + + +That's just another reason not to use a question mark operator `'?'` instead of `if`. +```` + +## Labels for break/continue + +Sometimes we need to break out from multiple nested loops at once. + +For example, in the code below we loop over `i` and `j` asking for values on coordinates `(i, j)` from `(0,0)` to `(3,3)`: + +```js run no-beautify +for (let i = 0; i < 3; i++) { + + for (let j = 0; j < 3; j++) { + + let input = prompt(`Value at coords (${i},${j})`, ''); + + // what if I want to exit from here? + + } +} + +alert('Done!'); +``` + +Let's say we need a way to stop the process. Like if we user decides to cancel the input. + +The ordinary `break` after `input` would only break the inner loop. That's not sufficient. Labels come to the rescue. + +A *label* is an identifier with a colon before a loop: +```js +labelName: for(...) { + ... +} +``` + +We can put the `labelName` after a break statement, and it will break out of the labelled loop. + +Like here: + +```js run no-beautify +*!*outer:*/!* for (let i = 0; i < 3; i++) { + + for (let j = 0; j < 3; j++) { + + let input = prompt(`Value at coords (${i},${j})`, ''); + + // if an empty string or canceled, then break out of both loops + if (!input) *!*break outer*/!*; // (*) + + // do something with the value... + } +} +alert('Done!'); +``` + +In the code above `break outer` looks upwards for the label named `outer` and breaks out of that loop. + +So the control goes straight from `(*)` to `alert('Done!')`. + +We can also move a label into the separate string: + +```js no-beautify +outer: +for (let i = 0; i < 3; i++) { ... } +``` + +The `continue` directive can also be used with a label. In this case the execution would jump onto the next iteration of the labelled loop. + +````warn header="Labels are not a \"goto\"" +Labels do not allow to jump into an arbitrary place of code. + +For example, it is impossible to do like this: +```js +break label; // jumps to label? No. + +label: for(...) +``` + +The call to a `break/continue` is only possible from inside the loop, and the label must be somewhere upwards from the directive. +```` + +## Summary + +There are 3 types of loops in JavaScript: + +- `while` -- the condition is checked before each iteration. +- `do..while` -- the condition is checked after each iteration. +- `for` -- the condition is checked before each iteration, additional settings available. + +To make in "infinite" loop, usually the `while(true)` construct is used. Such a loop, just like any other, can be stopped with the `break` directive. + +If we don't want to do anything more on this iteration and would like to forward on to the next one -- the `continue` directive does it. + +`Break/continue` support labels before the loop. A label is the only way for `break/continue` to escape the nesting and go to the outer loop. + diff --git a/1-js/2-first-steps/14-switch/1-rewrite-switch-if-else/solution.md b/1-js/2-first-steps/14-switch/1-rewrite-switch-if-else/solution.md new file mode 100644 index 00000000..50d1174b --- /dev/null +++ b/1-js/2-first-steps/14-switch/1-rewrite-switch-if-else/solution.md @@ -0,0 +1,20 @@ +To be precise, the `if` must use a strict comparison `'==='`. + +In reality though, probably a simple `'=='` would do. + +```js no-beautify +if(browser == 'Edge') { + alert("You've got the Edge!"); +} else if (browser == 'Chrome' + || browser == 'Firefox' + || browser == 'Safari' + || browser == 'Opera') { + alert( 'Okay we support these browsers too' ); +} else { + alert( 'We hope that this page looks ok!' ); +} +``` + +Please note: the construct `browser == 'Chrome' || browser == 'Firefox' …` is split into multiple lines for better readability. + +But the `switch` is still neater and more descriptive. diff --git a/1-js/2-first-steps/14-switch/1-rewrite-switch-if-else/task.md b/1-js/2-first-steps/14-switch/1-rewrite-switch-if-else/task.md new file mode 100644 index 00000000..f4dc0e5f --- /dev/null +++ b/1-js/2-first-steps/14-switch/1-rewrite-switch-if-else/task.md @@ -0,0 +1,26 @@ +importance: 5 + +--- + +# Rewrite the "switch" into an "if" + +Write the code using `if..else` which would correspond to the following `switch`: + +```js +switch (browser) { + case 'Edge': + alert( "You've got the Edge!" ); + break; + + case 'Chrome': + case 'Firefox': + case 'Safari': + case 'Opera': + alert( 'Okay we support these browsers too' ); + break; + + default: + alert( 'We hope that this page looks ok!' ); +} +``` + diff --git a/1-js/2-first-steps/14-switch/2-rewrite-if-switch/solution.md b/1-js/2-first-steps/14-switch/2-rewrite-if-switch/solution.md new file mode 100644 index 00000000..f3a8b021 --- /dev/null +++ b/1-js/2-first-steps/14-switch/2-rewrite-if-switch/solution.md @@ -0,0 +1,27 @@ +The first two checks are a usual `case`. The third one is split into two cases: + +```js run +let a = +prompt('a?', ''); + +switch (a) { + case 0: + alert( 0 ); + break; + + case 1: + alert( 1 ); + break; + + case 2: + case 3: + alert( '2,3' ); +*!* + break; +*/!* +} +``` + +Please note: the `break` at the bottom is not required. But we put it to make the code future-proof. + +In the future, there is a chance that we'd want to add one more `case`, for example `case 4`. And if we forget to add a break before it, at the end of `case 3`, there will be an error. So that's a kind of self-insurance. + diff --git a/1-js/2-first-steps/14-switch/2-rewrite-if-switch/task.md b/1-js/2-first-steps/14-switch/2-rewrite-if-switch/task.md new file mode 100644 index 00000000..ec99d098 --- /dev/null +++ b/1-js/2-first-steps/14-switch/2-rewrite-if-switch/task.md @@ -0,0 +1,23 @@ +importance: 4 + +--- + +# Rewrite "if" into "switch" + +Rewrite the code below using a single `switch` statement: + +```js run +let a = +prompt('a?', ''); + +if (a == 0) { + alert( 0 ); +} +if (a == 1) { + alert( 1 ); +} + +if (a == 2 || a == 3) { + alert( '2,3' ); +} +``` + diff --git a/1-js/2-first-steps/14-switch/article.md b/1-js/2-first-steps/14-switch/article.md new file mode 100644 index 00000000..eb568816 --- /dev/null +++ b/1-js/2-first-steps/14-switch/article.md @@ -0,0 +1,169 @@ +# The "switch" statement + +A `switch` statement can replace multiple `if` checks. + +It gives a more descriptive way to compare a value with multiple variants. + +[cut] + +## The syntax + +It looks like this: + +```js no-beautify +switch(x) { + case 'value1': // if (x === 'value1') + ... + [break] + + case 'value2': // if (x === 'value2') + ... + [break] + + default: + ... + [break] +} +``` + +- The value of `x` is checked for a strict equality to the value from the first `case`, that is: `value1`, then to the second `value2` and so on. +- If the equality is found -- `switch` starts to execute the code starting from the corresponding `case`, and to the nearest `break` (or to the end of `switch`). +- If no case matched then the `default` code is executed (if exists). + +## An example + +An example of `switch` (the executed code is highlighted): + +```js run +let a = 2 + 2; + +switch (a) { + case 3: + alert( 'Too small' ); + break; +*!* + case 4: + alert( 'Exactly!' ); + break; +*/!* + case 5: + alert( 'Too large' ); + break; + default: + alert( "I don't know such values" ); +} +``` + +Here the `switch` starts to compare `a` from the first `case` variant that is `3`. The match fails. + +Then `4`. That's the match, so the execution starts from `case 4` and till the nearest `break`. + +**If there is no `break` then the execution continues with the next `case` without any checks.** + +An example without `break`: + +```js run +let a = 2 + 2; + +switch (a) { + case 3: + alert( 'Too small' ); +*!* + case 4: + alert( 'Exactly!' ); + case 5: + alert( 'Too big' ); + default: + alert( "I don't know such values" ); +*/!* +} +``` + +In the example above we'll see sequential execution of three `alert`s: + +```js +alert( 'Exactly!' ); +alert( 'Too big' ); +alert( "I don't know such values" ); +``` + +````smart header="Any expresion can be a `switch/case` argument" +Both `switch` and case allow arbitrary expresions. + +For example: + +```js run +let a = "1"; +let b = 0; + +switch (+a) { +*!* + case b + 1: + alert( 1 ); + break; +*/!* + + default: + alert('no-no, see the code above, it executes'); +} +``` +```` + +## Grouping of "case" + +Several variants of `case` can be grouped. + +For example, if we want the same code for `case 3` and `case 5`: + +```js run no-beautify +let a = 2 + 2; + +switch (a) { + case 4: + alert('Right!'); + break; + +*!* + case 3: // (*) + case 5: + alert('Wrong!'); + alert('How about to take maths classes?'); + break; +*/!* + + default: + alert('The result is strange. Really.'); +} +``` + +The grouping is just a side-effect of how `switch/case` works without `break`. Here the execution of `case 3` starts from the line `(*)` and goes through `case 5`, because there's no `break`. + +## The type matters + +Let's emphase that the equality check is always strict. The values must be of the same type to match. + +For example, let's consider the code: + +```js run +let arg = prompt("Enter a value?") +switch (arg) { + case '0': + case '1': + alert( 'One or zero' ); + + case '2': + alert( 'Two' ); + break; + + case 3: + alert( 'Never executes!' ); + + default: + alert( 'An unknown value' ) +} +``` + +1. For `0`, `1`, the first `alert` runs. +2. For `2` the second `alert` runs. +3. But for `3`, the result of the `prompt` is a string `"3"`, which is not strictly equal `===` to the number `3`. So we've got a dead code in `case 3`! The `default` variant will execite. +