function isHappy(array){
// записываем пустой массив в array
// (не важно что там мы получили, теперь этого нет)
array = []
// получаем 6 переменных с значением "ничего"(undefined)
let[x,y,z,b,n,v] = array
// сравниваем x+y+z == b+n и выкидываем, никак не используя
// с помощью оператора запятая(,) в if попадает только v
// как мы знаем во всех переменных undefined - if(undefined) - ложь
if(x+y+z == b+n,v){
console.log(`Число ${array} - счастливое!`);
}
else{
console.log(`Число ${array} - несчастливое`);
}
}
// вызываем isHappy с аргументом 000000, который является числом 0,
// просто записанным длинно, а не массивом
isHappy(000000)
метод = function(){
console.log(this)
};
и(не важно как) пихаем его в какие-то объекты.хрень.метод() // this - хрень
хрень.кишки.метод() // this - хрень.кишки
метод() // this - window
хрень.метод.call(хрень.кишки) // this - хрень.кишки
метод.call(хрень.кишки) // this - хрень.кишки
метод.call(null) // this - null
элемент.addEventListener('оппа', хрень.метод) // this -элемент
элемент.addEventListener('оппа', метод) // this -элемент
элемент.addEventListener('оппа', хрень.кишки.продукт.метод) // this -элемент
fn.call(!this ? this : obj)
- это чушь скорее всего. Если this - falsy, то ставим его как this при вызове функции fn, иначе ставим obj. Falsy this может быть только при явном указании(или в strict режиме, при вызове функции напрямую("без точки перед ней")), и скорее всего передача пустого this в таком случае просто сломает выполнение fn.метод = () => {
console.log(this)
};
это можно считать за явное указание this, потому что this тут всегда привязан тот, что был при создании стрелочной функции, независимо от того как и откуда её вызывают. const minGap = 3;
const keys = ['name', 'price'];
const input = [
{
name: "абрикосы",
price: 20
},
{
name: "тыква",
price: 50
},
{
name: "уи",
price: 1000
}
];
const maxLengths = keys.slice().fill(0);
const normalizedInput = input.map(item => keys.reduce((acc, key, i) => {
const current = String(item[key]);
const currentLength = current.length;
if(currentLength > maxLengths[i])
maxLengths[i] = currentLength;
acc[key] = current;
acc.length += currentLength;
return acc;
}, { length: 0 }));
const maxLength = maxLengths.reduce(
(sum, current) => sum + current,
minGap
);
const res = normalizedInput
.map(({
name,
price,
length
}) => name + ' '.repeat(maxLength - length) + price)
.join('\n');