2013-12-19 2 views
0

Следующий код работает в браузерах, но не в Node.js. Зачем?Nodejs - массивы на левой стороне

[a, b] = 'hey,there'.split(','); 
console.log(a); 
+1

Это не работает в Chrome 31. – Louis

+0

Не работает в моем браузере, и он не должен работать в любом браузере, если это произойдет, это, вероятно, браузер делает что-то, чтобы попытаться исправить вашу глупую кодировку. – adeneo

ответ

3

ES6 допускает что-то называемое деструктурирующими назначениями. (Красиво объяснено here. И вот ссылка на черновик spec.) Это то, что у вас есть в коде.

Похоже, что это ES6-функция, которую Firefox применяет раньше. (Возможно, слишком рано). К сожалению, это соответствует курсу с временем выполнения JavaScript. Многие из них дают доступ к функциям от предстоящих спецификаций раньше времени. Вы должны держать глаза очищенными, чтобы убедиться, что вы не используете то, что еще не было официально принято.

3

Ваш код рассматривается в ECMAscript 6. Это называется деструктуризацией массива. Вы можете увидеть его особенности здесь https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7

ваш код будет работать на текущей версии Firefox (28), но не Google Chrome (33) вы можете проверить совместимость вас браузер с этого сайта http://kangax.github.io/es5-compat-table/es6/

Если вы хотите запустить его в Google-хроме, есть флаг с именем Enable Experimental JavaScript, появившийся в chrome: // flags ==> make this flag = true, тогда вы можете его запустить

NodeJs поддерживает ECMASript 6, но вы будете запускать используя следующую команду:

узел --harmony yourapp.js

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