2016-11-18 9 views
2

Я использую следующий код, который отлично работает на es6fiddle:ES6 назначение деструктурирующего не работает в последнем узел

const o1 = { aa: 11, bb: 22, cc: 33 }; 
let { aa, ...o2 } = o1; 

console.log(o1.aa); 
console.log(o2.cc); 

(назначение кода выше, чтобы удалить элемент из aao1, хранить остальное в o2, без мутации o1).

Он работает в Интернете, но когда я пытаюсь выполнить этот код с моей консоли, он не работает. Я пробовал с последним узлом (6.9.1 и 7.1.0), и он не работает. Когда я смотрю на specs для этих версий, похоже, что он должен работать.

Вот сообщение об ошибке я получил в моей консоли:

$ node src/lru-cache.js 
/home/admin/experiments/ct/src/lru-cache.js:2 
let { aa, ...o2 } = o1; 
      ^^^ 
SyntaxError: Unexpected token ... 
    at Object.exports.runInThisContext (vm.js:76:16) 
    at Module._compile (module.js:542:28) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.runMain (module.js:604:10) 
    at run (bootstrap_node.js:394:7) 
    at startup (bootstrap_node.js:149:9) 
    at bootstrap_node.js:509:3 

$ node -v 
v6.9.1 

Что случилось с моей конфигурации, и как я могу заставить его работать? Благодаря!

+0

Вы вызываете узел с любыми флагами '--harmony ... '? – qxz

+0

Спасибо, я попробовал, результат тот же –

+2

Это «разрушение», а не «разрушение». Во всяком случае, ваша проблема заключается не в деструктурировании, а в свойствах объекта. * Работает в Интернете *: какой браузер? –

ответ

4

Синтаксис, который вы используете, называется object rest properties. Он еще не поддерживается Node.js; Фактически, единственной платформой, которая в настоящее время поддерживает ее, является Babel (см. ES Next compatibility table).