Я заметил несколько странное решение по транспиляции от babel в отношении необязательных параметров. Следующий код ES6:
function myFunction(x = 2, y = 3) {}
переносится на
function myFunction() {
var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2;
var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;
}
Вскоре мне предстоит провести презентацию о том, насколько короче и лаконичнее синтаксис ES6 и как он будет выглядеть в ES5 (обычно через Babel). Но для меня это кажется несколько вынужденным, а также гораздо менее эффективным. Есть ли причины не делать этого ?:
function myFunction(x, y) {
x = x === undefined ? 2 : x;
y = y === undefined ? 3 : y;
}
undefined
в качестве значения параметра со значением по умолчанию, будет использоваться значение по умолчанию, а неundefined
. - person T.J. Crowder   schedule 11.06.2017class
). Это более информативно с точки зрения реальных преимуществ нового синтаксиса. Я думаю, мы все можем согласиться с тем, что ваш первый блок кода, приведенный выше, более краток, чем ваш последний (и многие также утверждают, что это яснее, но это более субъективно). - person T.J. Crowder   schedule 11.06.2017