- Создайте функцию которая бы умела делать:
minus(10)(6); // 4
minus(5)(6); // -1
minus(10)(); // 10
minus()(6); // -6
minus()(); // 0
Подсказка, функция minus должна возвращать другую функцию.
function minus(n = 0){
return function(x = 0){
return n - x;
}
}
console.log(minus(10)(6));
console.log(minus(5)(6));
console.log(minus(10)());
console.log(minus()(6));
console.log(minus()());
- Реализовать функцию, которая умножает и умеет запоминать возвращаемый результат между вызовами:
function multiplyMaker ...
const multiply = multiplyMaker(2);
multiply(2); // 4 (2 * 2)
multiply(1); // 4 (4 * 1)
multiply(3); // 12 (4 * 3)
multiply(10); // 120 (12 * 10)
function multiplyMaker(value){
let x = value;
return function(n){
x *= n;
return x;
}
}
const multiply = multiplyMaker(2);
console.log(multiply(2));
console.log(multiply(1));
console.log(multiply(3));
console.log(multiply(10));
- Реализовать модуль, который работает со строкой и имеет методы:
a. установить строку
i. если передано пустое значение, то установить пустую строку
ii. если передано число, число привести к строке
b. получить строку
c. получить длину строки
d. получить строку-перевертыш
Пример:
модуль.установитьСтроку(‘abcde’);
модуль.получитьСтроку(); // ‘abcde’
модуль.получитьДлину(); // 5
function myString() {
let str = '';
return {
strLength(str) {
return str.length;
},
strReturn() {
return str;
},
strSet(x) {
str = x;
return true;
},
strReverce(x) {
str = x;
return return str.split('').reverse().join('');
},
}
}
var mystr = myString();
console.log(mystr.strLength('abcde'));
console.log(mystr.strSet('abcde'));
console.log(mystr.strReturn());
Пример преподавателя
const strModule = (function (){
let str = '';
function setStr(val = '') {
str = String(val);
}
function getStr() {
return str;
}
function getStrLength() {
return str.length;
}
function getReverseStr() {
return str.split('').reverse().join('');
}
return {
setStr,
getStr,
getStrLength,
getReverseStr
}
}());
- Создайте модуль “калькулятор”, который умеет складывать, умножать, вычитать, делить и возводить в степень. Конечное значение округлить до двух знаков после точки (значение должно храниться в обычной переменной, не в this).
модуль.установитьЗначение(10); // значение = 10 модуль.прибавить(5); // значение += 5 модуль.умножить(2); // значение *= 2 модуль.узнатьЗначение(); // вывести в консоль 30 (здесь надо округлить)
Также можно вызывать методы цепочкой:
модуль.установитьЗначение(10).вСтепень(2).узнатьЗначение(); // 100
function myCalc() {
let res = 0;
return {
resSet(x) {
res = x;
return res;
},
resPlus(x) {
res += x;
return res;
},
resMinus(x) {
res -= x;
return res;
},
resMult(x) {
res *= x;
return res;
},
resGet() {
return res;
},
}
}
let result = myCalc();
console.log(result.resSet(10));
console.log(result.resPlus(5));
console.log(result.resMinus(5));
console.log(result.resMult(5));
console.log(result.resGet());
Пример преподавателя
const numModule = (function (){
let num = 0;
function setNumber(val = 0) {
num = Number(val);
return this;
}
function plus(val) {
num += Number(val);
return this;
}
function minus(val) {
num -= Number(val);
return this;
}
function devide(val) {
num /= Number(val);
return this;
}
function pow(ex = 2) {
num = Math.pow(num, ex);
return this;
}
function getNumber() {
return Number(num.toFixed(2)) || 0;
}
return {
setNumber,
plus,
minus,
devide,
pow,
getNumber
}
}());
console.log(
numModule
.setNumber(3)
.pow(2)
.getNumber()
)