|
@@ -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]() })();
|