top of page

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


© 2015 Все права защищены

bottom of page