2016-07-05 5 views
1

Экспериментируя с деструктуризацией и обнаружил, что тот же самый код работает на StackOverflow и не Codepen (игрушка становится «неопределенной»): http://codepen.io/tsalexey544/pen/VjWxmm?editors=0010#Разрушение в ES6. Должен ли я беспокоиться?

Что это значит? следует ли беспокоиться при использовании деструктурирования в моих проектах?

let obj = { 
 
    species: "Cat", 
 
    // toy: "ball", 
 
} 
 

 
function whatDoTheyDo ({species, toy = "ball"}) { 
 
    return `The ${species} playes with a ${toy}` 
 
} 
 

 
document.write(whatDoTheyDo(obj));

ответ

2

Вам просто нужно установить препроцессор babel в CodePen, в противном случае он будет использовать стандарт ES5, где деструктурирующий не поддерживается.

Если вы хотите использовать функции ES6/ES7, вам нужно «перевести» свой код обратно на ES5, используя определенные инструменты, такие как Babel. Некоторые браузеры уже поддерживают некоторые функции ES6, но полная поддержка по-прежнему как-то пятнистая.

Редактировать - Чтобы ответить на ваш вопрос: ДА, вам следует беспокоиться о действительном действительном ES5-коде, поскольку ES6 еще не полностью поддерживается. По крайней мере, вы должны подать свой код на Babel и опубликовать полученный код, но я настоятельно рекомендую посмотреть его Webpack и перейти к полной toolchain.

+2

Кажется, что это должно быть ошибка в CodePen, хотя - если вы установите препроцессор на none , он должен оставить код незатронутым? Но, похоже, это записывается как «функция whatDoTheyDo ({species, toy}) {' - т.е. отсутствует значение по умолчанию, поэтому на нем выполняется некоторая предварительная обработка и разбивается. –

+0

Должен ли я также устанавливать babel на свой сервер? или ES6 по умолчанию? –

+1

@AlexeyTseitlin - Бабель не должен быть серверным. Это библиотека транспиляции. Он преобразует код ES6 в код ES5, который запускается в браузере, совместимом с ES5. – evolutionxbox

 Смежные вопросы

  • Нет связанных вопросов^_^