хуйу нас не матерятся
Это вторая часть задач по javascript, но теперь это взгляд со стороны работодателя. Это вопросы которые задаю я при собеседовании на позицию javascript developer. Я постарался перечислить их от более простых к более сложным. Вопросов не много, не обязательно они задаются все, и не обязательно в таком же порядке.
test1 = 1;
var test2 = 2;
let test3 = 3;
const test4 = 4;
Чем они отличаются?
const x = 0;
x = 3; // error
const test = {
x: 0
};
test.x = 3; // success!
Почему?
x = 1;
console.log(x); // 1
var x = 0;
Почему консольлог выводит 1 ?
x = 1; // ReferenceError: x is not defined
console.log(x);
let x = 0;
Возвращает ошибку?
console.log( function() { return 1; } );
console.log( function() { return 1; }() );
console.log( new function() { return 1; } );
console.log( new function() { return 1; }() );
Собсно что они покажут?
let arr = [ 1, 2, 3, 4 ];
for(let i=0; i<arr.length; i++)
console.log(i);
Перечислите, пожалуйста, другие способы обхода массива (желательно не меньше 4), но без извращений вроде while циклов, только специализированные методы для работы с массивами.
const arr = [ 1, 2, 3 ];
const result = arr.map( n => { value: n } );
console.log( result );
Возвращает [ undefined, undefined, undefined ] а не [ { value: n }, { value: n }, { value: n } ] ? И как это пофиксить?
const adder = {
sum: 0,
add(num) {
num.forEach( function(el) {
this.sum += el;
});
}
}
adder.add([ 1, 2, 3 ]);
console.log( adder.sum );
Почему консольлог возвращает 0 и как это исправить? Для чистоты эксперимента не смотрите на следующий пример.
const adder = {
sum: 0,
add: num => {
num.forEach( el => {
this.sum += el;
console.log( this );
});
}
}
adder.add([ 1, 2, 3 ]);
console.log( adder.sum );
А почему в этом примере опять получаем 0 в консольлоге?
const Test = function() {
this.val = 0;
}
let test1 = new Test();
console.log( Test );
console.log( test1 );
Почему в первом случае выводится: [Function: Test]
А во втором: Test { val: 0 }
{
result: 'success',
items: [
{
total: 10,
blocked: 5,
whiteListed: 3
},
{
total: 15,
blocked: 2,
whiteListed: 6
},
...
]
}
Для построения графиков нужно сделать отдельные массивы данных по каждому свойству, например:
let total = [ 10, 15, ... ];
let blocked = [ 5, 3, ... ];
let whiteListed = [ 3, 6, ... ];
for(var i=0; i<3; i++)
setTimeout( function() {
console.log(i);
}, 0 );
Выводит:
3
3
3
а не
0
1
2
И как это исправить?
let x = 1;
let test1 = {
x: 1
};
let y = x;
let test2 = test1;
test2.x = 2;
y = 2;
console.log( x );
console.log( test1.x );
Что будет в логе и почему?