Table
of Contents
Introduction 1.1
1
Introduction
1. Что такое замыкание?
2. Что такое мемоизация?
3. Реализуйте функцию seq() . Эта функция должна принимать массив
функций, которые возвращают promise-объекты, и разрешать их один за
другим.
let a = () => Promise.resolve('a');
let b = () => Promise.resolve('b');
let c = () => Promise.resolve('c');
await seq([a, b, c]); // ['a', 'b', 'c']
await seq([a, c, b]); // ['a', 'c', 'b']
4. Что выведет следующий код?
for (var i = 0; i < 4; i++) {
setTimeout(() => console.log(i), 0);
}
5. Что выведет следующий код?
let dog = {
name: 'doggo',
sayName() {
console.log(this.name);
}
}
let sayName = dog.sayName;
sayName();
6. Что выведет следующий код?
2
Introduction
function Dog(name) {
this.name = name;
}
Dog.bark = function() {
console.log(`${this.name} says woof`);
}
let fido = new Dog('fido');
fido.bark();
7. Что выведет следующий код?
function isBig(thing) {
if (thing == 0 || thing == 1 || thing == 2) {
return false;
}
return true;
}
console.log(isBig(1));
console.log(isBig([2]));
console.log(isBig([3]));
8. Что выведет следующий код?
let a={};
let b={key:'b'};
let c={key:'c'};
a[b]=123;
a[c]=456;
console.log(a[b]);
9. Чему равно foo.x ?
3
Introduction
let foo = {n: 1};
let bar = foo;
foo.x = foo = {n: 2};
10. Напишите функцию сложения вида add(num1)(num2) ...
Примечание: Количество слагаемых не ограничено
add(2)(3)(); // 5;
11. Напишите простую функцию, чтобы узнать равен ли один из входных
параметров 3 .
isThreePassed(1,2); // false
isThreePassed(9,3,4,9); // true
12. Что выведет следующий код?
function *foo(x) {
var y = 2 * (yield (x + 1));
var z = yield (y / 3);
return (x + y + z);
}
var it = foo(5);
console.log(it.next()); // {value: ?, done: ?}
console.log(it.next(12)); // {value: ?, done: ?}
console.log(it.next(13)); // {value: ?, done: ?}
13. Расскажите основные подходы оптимизации загрузки страницы.
14. Расскажите основные подходы оптимизации React приложений.