Olga_Brekhuntsova 2 سال پیش
والد
کامیت
a775b5ac2e

+ 3 - 0
hw-js-06-functions-scopes/.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+  "liveServer.settings.port": 5501
+}

+ 16 - 0
hw-js-06-functions-scopes/index.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="ru">
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>nix-js-06-functions-scopes</title>
+</head>
+
+<body style="padding:30px; font-family:Anonymous Pro, monospace">
+    <h1>Functions-scopes</h1>
+    <p>Все в консоли</p>
+    <div id='root'></div>
+    <script src="/js/index.js" type="module"></script>
+ </body>
+
+</html>

+ 196 - 0
hw-js-06-functions-scopes/js/index.js

@@ -0,0 +1,196 @@
+
+// Задание1: Используя перебор массива arguments циклом for, сделайте функцию, которая складывает любое количество параметров
+
+function add() { 
+      let sum = 0;
+    for (const argument of arguments) { sum += argument };
+    console.log(sum);
+}
+add(1, 2, 3, 4, 5, 6, 7, 8, 9);
+add(30, 33, 45, 56);
+
+
+// Задание2: перепишите функции выше в стиле ES5 (function ....)
+
+// var sqr = x => x*x //один параметр, скобки не нужны
+// alert(sqr(2))
+
+// var mul = (x,y) => x*y //два параметра - нужны скобки
+// alert(mul(2,5))
+
+// var objectCreator = (x,y) => ({x, y}) //создает объект {x: x, y: y}. Если забыть скобки - то JS воспримет {x,y} как блок кода, и без return вернет undefined
+// console.log(objectCreator(4,5))
+
+// var longFunc = (x,y) => { //почти обычная функция
+//     let result = prompt(x,y)
+//     return result;
+// }
+
+// longFunc('check', 'text')
+
+
+function sqr(x) { return x * x }//один параметр, скобки не нужны
+alert(sqr(2))
+
+function mul(x, y) { return x * y }//два параметра - нужны скобки
+alert(mul(2,5))
+
+function objectCreator(x, y) { return( { x, y }) } //создает объект {x: x, y: y}. Если забыть скобки - то JS воспримет {x,y} как блок кода, и без return вернет undefined
+console.log(objectCreator(4,5))
+
+function longFunc (x,y) { //почти обычная функция
+    let result = prompt(x,y)
+    return result;
+}
+longFunc('check', 'text')
+
+// HW-1 a
+// Напишите функцию a, которая просто является коротким именем для alert.Смотрите пример с d(),
+// которая является коротким именем для debugger из материала лекции
+
+function a() {
+    alert(...arguments);
+}
+a("Привет!") // вызывает alert("Привет!")
+
+// HW-2 cube
+// Напишите функцию cube, которая возвращает число в третьей степени:
+function cube() {
+    const [b] = [...arguments];
+    return b * b * b;  
+}
+console.log(`cube(4)=${cube(4)}`);
+
+// HW-3 avg2
+// Напишите функцию avg2, которая рассчитывает среднюю для двух чисел:
+// формула для подсчета среднего: (a + b) / 2
+//avg2(1,2) // возвращает 1.5
+//avg2(10,5) // возвращает 7.5
+// const avg2 = (a, b) => (a + b) / 2;
+function avg2() {
+    const [a, b] = [...arguments];
+    console.log((a + b) / 2);
+    return (a + b) / 2
+};
+console.log(`avg2(1,2)=${avg2(1,2)}` )
+console.log(`avg2(10,5)=${avg2(10,5)}`)
+
+// HW-4 sum3
+// Напишите функцию sum3 для суммирования 3 чисел:
+// Обратите внимание, что sum3 от двух параметров тоже работает корректно.
+function sum3() {
+    const [a = 0, b = 0, c = 0] = [...arguments];
+    console.log(a+b+c);
+    return a + b + c;
+ };
+
+console.log(`sum3(1,2,3)=${sum3(1,2,3)}`) // => 6
+console.log(`sum3(5,10,100500)=${sum3(5,10,100500)}`) // => 100515
+console.log(`sum3(5,10)=${sum3(5,10)}`) // => 15
+
+// HW-5 intRandom
+// Напишите функцию intRandom, которая принимает два параметра: нижнюю и верхнюю границу,
+//     и возвращает целое случайное число из этого диапазона включительно:
+// Обратите внимание, что если передан один параметр(intRandom(10) в примере выше),
+//     то функция работает как будто первый параметр равен 0, а переданный параметр становится вторым параметром(intRandom(0, 10))
+// Используйте умножение для расширения значения встроенной функции Math.random c диапозона 1,
+//     сложениe для смещения результата на первый параметр, и Math.round для округления результата
+
+function intRandom() {
+    let [min=0, max=0] = [...arguments];
+    (arguments.length === 1) && (max = min) && (min = 0);
+    let result;
+    console.log(result = Math.round(Math.random() * (max - min) + min));
+    return result;
+ }
+
+intRandom(2,15) // возвращает целое случайное число от 2 до 15 (включительно)
+intRandom(-1,-1) // вернет -1
+intRandom(0,1) // вернет 0 или 1
+intRandom(10) // вернет 0 до 10 включительно
+
+
+// HW-6 greetAll
+// Сделайтей функцию, которая приветствует всех, кто передан в качестве параметров.
+// Вам поможет arguments и for
+function greetAll() { 
+    let persons='';
+    for (const argument of arguments) { persons += argument + ', ' };
+    alert(`Hello ${persons.slice(0, -2)}`)
+}
+greetAll("Superman") // выводит alert "Hello Superman"
+greetAll("Superman", "SpiderMan") // выводит alert "Hello Superman, SpiderMan"
+greetAll("Superman", "SpiderMan", "Captain Obvious") // выводит alert "Hello Superman, SpiderMan, Captain Obvious"
+
+// sum
+// Напишите функцию sum, которая сумирует любое количество параметров: Используйте псевдомассив arguments для получения всех параметров,
+//     и for для итерирования по нему
+function sum() { 
+    let result = 0;      
+        for (const argument of arguments) { result += argument };
+        console.log(`sum=${result}`);
+        return result;
+    }
+sum(1) // => 1
+sum(2) // => 2
+sum(10,20,40,100) // => 170
+
+// Union
+// Всё предыдущие функции и примеры с ними объедините в функции, которые вызывайте в switch по имени задания:
+function aSample(){
+    a("Привет!") // вызывает alert("Привет!")
+}
+
+function cubeSample(){
+    cube(5) // => 125
+}
+function avg2Sample() {
+    avg2(10, 5)
+}
+function sum3Sample(){
+   sum3(5,10)
+}
+function intRandomSample() {
+    intRandom(10) // вернет 0 до 10 включительно
+}
+function greetAllSample(){
+   greetAll("Superman", "SpiderMan", "Captain Obvious") 
+}
+function sumSample(){
+    sum(10,20,40,100)
+}
+var sample = prompt("Введите название задания");
+(function () {
+    switch (sample.toLowerCase()) {
+        case "a": aSample();
+            break;
+        case "cube": cubeSample()
+            break;
+        case "avg2": avg2Sample();
+            break;
+        case "sum3": sum3Sample();
+            break;
+        case "intRandom": intRandomSample();
+            break;
+        case "greetAll": greetAllSample();
+            break;
+        case "sum": sumSample();
+            break;
+    }
+}
+)();
+
+// Union declarative
+// Используйте ассоциативный массив вместо switch
+
+const funcObj = {
+    'a': function aSample() { a("Привет!")},
+    'cube': function cubeSample() { cube(5)    },
+    'avg2': function avg2Sample() {avg2(10, 5)    },
+    'sum3': function sum3Sample() {sum3(5, 10)   },
+    'intRandom': function intRandomSample() {intRandom(10)},
+    'greetAll': function greetAllSample() { greetAll("Superman", "SpiderMan", "Captain Obvious") },
+    'sum': function sumSample() {sum(10, 20, 40, 100)}
+}
+var sample2 = prompt("Введите название задания еще раз");
+(function () {const key = sample2.toLowerCase(); funcObj[key]() })();

+ 6 - 0
hw-js-06-functions-scopes/readme.md

@@ -0,0 +1,6 @@
+Задачи сгруппированы по темам. Каждый тематический блок в отдельном скрипте.
+Выполнены все задачи на все пояса:
+
+1. гадалке можно устанавливать кол-во элементов, которые вносятся в историю (что в случае с ассоциативным массивом predictArray реализуется, конечно, гораздо проще, чем с многомерным массивом)
+
+Хостинг http://hw_js_06.olgapistryak.fe.a-level.com.ua/