4 заметки с тегом

javascript

Задачки для собеседования на фронтендера

24 октября, 16:02

Эти задачи встречаются довольно часто. Рекомендую обращать внимание не на решения, а на то как кандидат объясняет происходящее.

Что выведет консоль?

var b = {}; 
var c; 

b.b = 1; 
c = b; 
c.b = 2; 

console.log(b.b); // ? 
console.log(c.b); // ?

var i = 10; 
var array = []; 

while (i--) { 
  array.push(function() { 
    return i + i; 
  }); 
} 

console.log([ 
  array[0](), 
  array[1](), 
])
let x, { x: y = 1 } = { x }; y;
console.log(x, y);

Напишите функцию

console.log(sum(2)(3)) // 5
console.log(sum(2,3)) // 5

Напишите функцию, которая делает копию объекта

Напишите функцию, аналогичную методу Array.prototype.reduce()

Есть связанный список. Напишите функцию, которая его переворачивает задом наперёд

Синтетические задачи, оторванные от реальной жизни:

let a = 10 
a += ++a + a++ + a++ 
console.log(a);

// как сделать чтобы результат был положительный?
console.log((a == 1) && (a == 2) && (a == 3)) // true

var y = 5;
var x = function(){
    return y;
};
var z = function(t){
    var y = 10;
    return t();
};
console.log(z(x));

(function(x, f = () => x) {
    var x;
    var y = x;
    x = 2;
    return [x, y, f()];
})(1);

JavaScript falsy list

6 июня 2018, 21:29
undefined
null
false
+0
-0
NaN
""
cheatsheet   javascript   js   notes

Обучающие материалы по JavaScript и программированию

18 октября 2017, 12:18

RTL layout cross-browser element.scrollLeft issue solution

1 марта 2017, 16:42

Sometimes there is a moment as you make horizontal scrolling slider or timeline and become aware of the real world around you.

Some people will figure out the difference in how browsers implements Element.scrollLeft property on right to left layout (dir=«rtl»).

Most browsers have an initial value of scrollLeft equal to zero and will increase its value as you scroll (IE/Edge).

But in Chrome initial value of scrollLeft depends on scroll width (!) and is reduced to zero as you scroll.

Next problem is that some browsers increase scrollLeft value (Chrome, IE/Edge) while others decrease it to make it negative (Safari and Firefox).

Here is simple and obvious solution

// get initial value
var initial = el.scrollLeft();
// try to scroll with negative value
el.scrollLeft(-1);
// check if browser sets scrollLeft to negative
if ( el.scrollLeft() < 0 ) {
    // Safari, FF
    el.scrollLeft(/* ...  */);
} else {
    if ( initial > 0 ){
        // Chrome
        el.scrollLeft(/* ...  */);
    } else {
        // IE
        el.scrollLeft(/* ...  */);
    }
}
frontend   hint   javascript   js   rtl   scrollLeft   разработка