function globalError(e) {
e.preventDefault();
window.ga('send', 'event', 'logs', 'error', JSON.stringify({
reason: e.reason,
message: e.message,
filename: e.filename,
pos: `${e.lineno}:${e.colno}`,
href: location.href
}), {
nonInteraction: true
});
}
window.addEventListener('unhandledrejection', globalError);
window.addEventListener('error', globalError);
Гугл аналитику можно заменить на любой другой сбор логовelement.onerror = function(e) {
// обрабатываем ошибку
};
function* fibo() {
let prev = 1;
let prePrev = 1;
yield prePrev;
yield prev;
while(true) {
let cur = prePrev + prev;
yield cur;
prePrev = prev;
prev = cur;
}
}
for(let val of fibo()) {
alert(val);
if(val > 100) { break; }
}
в текущей области видимости 'func' не объявлена
var f = function func() {
console.log(func.name); // 'func'
};
console.log(f.name); // 'func'
console.log(func.name); // Reference error так как func нет в этой области видимости
function groupByDate(arr) {
//свертка массива во временный объект, с датами в качестве ключей
const temp = arr.reduce((acc, elem) => {
// делим строку по пробелу и извлекаем 0й элемент '2018-03-05 12:00' -> '2018-03-05'
const date = elem.date.split(' ')[0];
//если ключа-даты еще нет в объекте, записываем туда пустой массив
if(!acc[date]) {
acc[date] = [];
}
// ложим текущий элемент в соответствующий массив
acc[date].push(elem);
return acc;
}, {});
// извлекаем все ключи получившегося объекта в массив
// и преобразуем массив ключей в массив значений
return Object.getOwnPropertyNames(temp).map(k => temp[k]);
}