Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Array.prototype.concat.apply([], Array.prototype.slice.call(arguments));
function foo(...args) {
console.log(args);
}
var ImagePreloader = function(fallbackImage, onProgress) { }
не привлекать библиоетеки типа babel и не увеличивать итоговый размер скрипта
var foo = function() {}
undefined
foo.name
""

function foo() {
var args = new Array(arguments.length);
for (var i = 0; i < arguments.length; i++) {
args[i] = arguments[i];
}
console.log(args);
}
теряете … в производительностиДаёшь asm.js в каждый метод? :)
К тому же Array.prototype.slice.call это уже давно классика.
Продолжайте себя в этом уверять и не изучать изменения в языке.Я использую и ES6 и ES7. А до ES6 использовал node-fibers. Не делайте скоропостижных выводов. И не беритесь учить окружающих, не понимая сути. Ваша экономия на arguments по большей части неуместна. Воевать вот с этим имеет смысл только в высоко-нагруженных местах.
[].slice.call(arguments, 0) стал узким местом, да и не одним v8 едины.да и не одним v8 едины
не одним v8 едины

slice.call(arguments) добавит оптимизацию, как они сделали с fn.apply, что тогда? А вы мне микробенчмарки суете, которые r реальному миру имеют довольно посредственное отношение. Ну и главное, что я хотел, писать «За подобное использование arguments стоит бить по рукам» — попахивает снобизмом. Для этого в ES6 придумали spread операторSpread оператор хорош, но это ES6. И, кстати, далеко не факт, что такой код в ближайшее время будет оптимизирован. Не так давно мелькала статья, с причинами не-оптимизации. И по большому счёту, чтобы туда не угодить, нужно свой код под лупой разглядывать. Для некритичных к производительности участкам кода ― в этом смысла мало.
Array.prototype.slice.call(arguments)Promise.allSettled = require('promise-ext-settled');
.then(function() {
throw "Error";
})
.catch(function() {
return "Fallback";
})
.then(function(result) {
console.log(result);
// Получаем fallback
});
Получается, что, если асинхронная операция будет выполнена успешно, то выполнится onFulfilled callback в первом then, а далее onFulfilled callback во втором then.
Но что, если асинхронная операция завершится неудачей? Выполнится onRejected callback в первом then, а затем(внимание!) onFulfilled callback во втором then.
Почему? Смотрите выше правило для then-callback.
Исходя из него — чтобы вызвать следующий onRejected callback(которого кстати нет), необходимо: либо вернуть промис, который будет rejected, либо выбросить исключение.
А вот тут огромная СПАСИБА! :)
Я раньше оборачивал в новый Promise, теперь буду знать.
Fallback-действия в ES6 Promise