Задачи для изучающих JavaScript
⭐ - элементарные
⭐⭐- базовые
⭐⭐⭐ - продвинутые
Задача 1.1. Сложность: ⭐
Напишите функцию sumTo(n)
, которая для данного n
вычисляет сумму чисел от 1 до n
, например:
sumTo(1) = 1
sumTo(2) = 2 + 1 = 3
sumTo(3) = 3 + 2 + 1 = 6
sumTo(4) = 4 + 3 + 2 + 1 = 10
...
sumTo(100) = 100 + 99 + ... + 2 + 1 = 5050
Источник: https://learn.javascript.ru/recursion
Задача 1.2. Сложность: ⭐
Напишите функцию factorial(n)
, которая возвращает факториал числа n!
, используя рекурсивный вызов.
Источник: https://learn.javascript.ru/recursion
Задача 2.1. Сложность: ⭐⭐
Реализуйте на ES5:
var c = new Counter();
var a = c.next(); // 1
var b = c.next(); // 2
Задача 3.1. Сложность: ⭐⭐
Реализуйте функцию add
таким образом, чтобы примеры ниже работали:
add(2, 5); // 7
add(2)(5); // 7
Задача 3.2. Сложность: ⭐⭐
Исправьте код таким образом, чтобы вызов функции на последней строке выводил в консоль имя Sam:
var person = {
name: "Sam",
hello: function() {
console.log(this.name);
}
};
var hello = person.hello;
hello();
Источник: https://github.com/vvscode/js--interview-questions/blob/master/topics/inheritance-vs-context.md
Задача 3.3. Сложность: ⭐⭐
Реализуйте функцию union(), которая объединит уникальные элементы всех массивов, переданных ей.
Пример использования: union([1, 2, 2, 3], [101, 2, 1, 10], [2, 1])
Результат выполнения: [1, 2, 3, 101, 10]
.
Задача 4.1. Сложность: ⭐⭐
Как исправить код ниже, чтобы он выел в консоль 5 разных значений (от 0 до 4):
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
Источник: https://github.com/vvscode/js--interview-questions/blob/master/topics/closures.md
Задача 5.1. Сложность: ⭐⭐
Реазлизуйте метод класса Array forEach2, который будет работать точно также, как и существующий метода forEach.