В стандарте ES-2015 появилась возможность задавать параметры функции по умолчанию, выглядит это так:
function name(name = 'noname') {
console.log(name);
}
name()
Однако такого же эффекта можно было добиться с помощью хака:
function name(name) {
var name = name || 'noname'
console.log(name);
}
name()
При этом Babel транслирует такую функцию вот так:
function name() {
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'noname';
console.log(name);
}
name();
Какой вариант правильнее: как предлагает Babel или с использованием логического ||
?
Правильнее как бабель, разумеется. Потому что например:
> "" || "default"
-> "default"
и если вы захотите в свою функцию передать пустую строку, то поведение её будет слегка неожиданным.
Логическое ИЛИ подчиняется законам логики. В общем случае такое поведение не подходит. Babel транспилирует не зная ничего о Вашей бизнес логике.
Например, является ли пустая строка валидным значением или её нужно заменить значением по умолчанию? А 0?
let tests = [undefined, null, 0, '', false, NaN];
const test1 = (a = 42) => a;
const test2 = (a) => (a=a||42, a);
console.log(tests.map(test1));
console.log(tests.map(test2));
правильнее писать не опираясь на babel
так как
babel
ничего не знает о вашей логике babel
всего лишь обертка которая в будущем станет не нужна (в идеале) и когда стандарт ES-2015 станет стандартом дефакто то и надобность в babel
отпадетПеревод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть форма - обычнаяКроме "общих" полей в ней "на лету" генерируются div'ы с вложенными input'ами
Такая проблема: Есть таблица id(int),user_id(int),data(timestamp)
Нашёл решение такой же проблемы, но там причина была в том, что не создавалась папка MySQL Server 57 в папке MySQL, но у меня такой ошибки не возникло
Почему, мобильная адаптация не правильно отображается, может где ошибся, помогите пожалуйста!