-1 ? 1 : 2
значение -1 приводится к типу boolean и получается true-1 == true
значение true приводится к числу и получается 1===
и !==
) и приводить типы явно Т.е. если такой кандидат не может решать задачи 6 Кью, только 7 и 8 норм ,?
(function(y){ }(i))
() => { console.log(y) }
Насколько я знаю, _ в JS является валидным именем переменной, такую переменную можно создать, обращаться к ней и т.д. Так получается что я просто передаю в ф-цию неиспользуемую переменную?? Тоже самое как сделал бы a => { ... } ??Именно так.
() => { ... }
по ряду причин:a => { ... }
, только (a) => { ... }
. И банально проще, когда у тебя весь код по разным проектам в одном стиле. Number()
при вызове как функции, конвертирует аргумент в численный тип. Если не получается, возвращает NaN
(Not A Number) – специальное значение, которое при конвертации в булев даёт false
. (! Number(value))
сработает когда переданное не перевести в число, или когда число 0
.Number()
довольно строг с конвертацией в число, по сравнению даже с parseInt()
:parseInt("123HabraHabr") // 123
Number("123HabraHabr") // NaN
Number()
проглотил бы как число, но при этом она содержала код, который JS как-то интерпретирует. Типа '123 & alert("Habr!")'
– но нет, через Number()
это не пролезет, увы. res.redirect('/');
return;
Object.assign({}, [1,2,3,4,5]); // {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}
Object.assign({}, ['a','b','c']); // {0: "a", 1: "b", 2: "c"}
{...[1,2,3,4,5]} // {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}
Object.fromEntries(Object.entries([1,2,3,4])); // {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}
const isSumEven = arr => arr.reduce((p, c) => p ^ c, 1) & 1;
// или
const isSumEven = arr => !(arr.filter(n => n % 2).length % 2);
// или
const isSumEven = arr => Number.isInteger(arr.reduce((acc, n) => acc + n, 0) / 2);
// или
const isSumEven = arr => /[02468]$/.test(eval(arr.join('+')) ?? 0);
const result = arr.filter(isSumEven);