4 Занятие javascript
- Рома
- 8 февр. 2018 г.
- 2 мин. чтения
Задание №1. Функциональные выражения Есть следующее определение функции: function add(x, y) { return x + y; } Перепишете определение функции add() используя синтаксис Function Expression.
var add = function (x, y) {
return x + y;
}
alert(add(3,4));
Задание №2. Замыкания Есть следующий код: function createArrayIterator(array) { // Ваш код } var arr = [5, 6, 7]; var itr = createArrayIterator(arr); console.log(itr()); // 5 console.log(itr()); // 6 console.log(itr()); // 7 console.log(itr()); // undefined Допишите код, чтобы функция createArrayIterator() возвращала функцию- перечислитель для массива, который задается через параметр array.
function createArrayIterator(array) {
var arr=[];
var i = 0;
return function itr(){
return array[i++];
}
}
var arr = [5, 6, 7];
var itr = createArrayIterator(arr);
console.log(itr()); // 5
console.log(itr()); // 6
console.log(itr()); // 7
console.log(itr()); // undefined
Задание №3. Замыкания Напишите код для "безопасного" вычисления периметра и площади прямоугольника. Сторонами прямоугольника может быть только число (тип данных Number, значения других типов данных нельзя устанавливать), значение которого, строго больше 0.
function count(a, b, operation){
a=Number(a);
b=Number(b);
if (a > 0 && b > 0){
return operation(a,b);
}
return "ты рак";
}
function squad(x, y){
return x*y;
}
function per(x, y){
return x+y;
}
var obj = count(2,5,squad);
alert(obj);
Задание №4. Рекурсивные функции Напишите рекурсивную функцию digitSum(k), которая находит сумму цифр целого числа k, не используя циклы.
function digitSum(k){
if(k>0){
k=k%10 + digitSum(Math.floor(k/10));
}
return k
}
alert(digitSum(236));
Задание №5. Переопределение функций Есть следующий код: function format(data, type) { // Ваш код } var originFormat = format; format("1", "number"); console.log(format()); // 1 console.log(typeof format()); // "number" originFormat("Hello", "boolean"); console.log(format()); // true
console.log(typeof format()); // "boolean" originFormat(true, "string"); console.log(format()); // "true" console.log(typeof format()); // "string" Допишите код, чтобы функция format(data, type) переопределяла себя в зависимости от параметра type: Если значением параметра type является строка "number", то переопределенная версия функции format() преобразует значение параметра data в число и возвращает результат; Если значением параметра type является строка "string", то переопределенная версия функции format() преобразует значение параметра data в строку и возвращает результат; Если значением параметра type является строка "boolean", то переопределенная версия функции format() преобразует значение параметра data в логическое значение и возвращает результат; При других значениях параметра type функция format() не переопределяет себя.
function format(data, type) {
if(type=="number"){
format = function(){
return Number(data);
}}
else if (type == "string"){
format = function(){
return String(data);
}
}
else if (type == "boolean"){
format = function(){
return Boolean(data);
}
}
else return data;
}
var originFormat = format;
originFormat("Hello", "boolean");
console.log(format()); // true
console.log(typeof format());
Comments