Вы находитесь на странице: 1из 4

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 приложений.