Задачи по JS
1)
// ES5
var c = new Counter();
var a = c.next(); //1
var b = c.next(); //2
2)
var c = counter();
var a = c.next(); //1
var b = c.next(); //2
3)
var a = counter(); //1
var b = counter(); //2
4)
// ES6
var c = new Counter();
var a = c.next(); //1
var b = c.next(); //2
5)
function qwe() {
try {
throw new Error('Ошибка');
return 1;
} catch (e) {
return 2;
} finally {
return 3;
}
}
6)
Чему равен a[0]()
var a = [];
for (var i = 0; i < 3; i++) {
a[i] = function() {
console.log(i);
};
}
7)
// что выведется в консоль
function foo(){
var that = this;
function bar() {
return that + this;
}
arrBar = () => {
return that + this;
}
console.log(bar.call(10) + arrBar.call(15));
}
// вариант 1
foo.call(10);
// вариант 2
foo(10);
8)
(() => {console.log(this)}).bind(1)();
// будет window (если не вкл use strick)
9)
// на Promise
delay(1000, 42).then(res => console.log(res));
//на async/await
delay(1000, 42)
Решение задач
1
function Counter(){
this.count = 1;
this.next = function(){
console.log(this.count++);
};
};
var c = new Counter();
var a = c.next(); //1
var b = c.next(); //2
2
function counter(){
var count = 1;
return {
next: function(){
console.log(count++);
}
};
};
var c = counter();
var a = c.next(); //1
var b = c.next(); //2
3
var counter = function(){
var count = 1;
return function(){
console.log(count++);
}
}();
var a = counter(); //1
var b = counter(); //2
4
// ES6
class Counter {
constructor(){
this.count = 1;
}
next() {
console.log(this.count++);
}
}
var c = new Counter();
var a = c.next(); //1
var b = c.next(); //2
5
function qwe() {
try {
throw new Error('Ошибка');
return 1;
} catch (e) {
return 2;
} finally {
return 3;
}
}
на экране будет 3, т.к. finally выполняется всегда
6
Вариант 1
var a = [];
for (let i = 0; i < 3; i++) {
a[i] = function() {
console.log(i);
};
};
a[0]();
Вариант 2
var a = [];
for (var i = 0; i < 3; i++) {
(function(j){
a[j] = function() {
console.log(j);
}
})(i);
};
a[0]();
Вариант 3
var a = [];
function log(j){
console.log(j);
};
for (var i = 0; i < 3; i++) {
a[i] = log.bind(this, i);
};
a[0]();