2017-07-19 32 views
0

在ES2015中使用與export一起使用的解構賦值是否有效?此導出語法在ES2015中有效嗎?

// bam.js 
const bam = { foo() {}, bar() {} }; 

export { foo, bar } = bam; 


// another.js  
import { foo, bar } from 'bam'; 
+5

否:https://ecma-international.org/ecma-262/8.0/#sec-exports,[babel repl](https://babeljs.io/repl/#?babili=false&evaluate=false&lineWrap=false&presets = ES2015與目標=瀏覽器= BUILTINS =假調試=假實驗值=假寬鬆=假規格=假code_lz = KYDwDg9gTgLgBAbzgMwhANHARgQynAXzgF5scBbAbiA&操場= TRUE)。 「export」聲明中的「{...}」部分與解構無關,即使它使用相似的語法。 –

+1

你可以很容易地使用在線巴貝爾REPL檢查這樣的事情自己:https://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=env%2Creact&targets=&browsers=&builtIns=false&debug=false&code_lz=MYewdgzgLgBARgQwLYwLwwN4wGYhACgEpMBfAGngQCcjSYSBuAWAChWBTADwAcQrYsuEBURV6aSkgZA –

+0

好的,謝謝。檢查這個問題的難度促成了這個問題,所以這很有用。 – Ben

回答

2

號的specification要求export應遵循

  • default ...
  • 的聲明(類,函數)
  • 變量聲明(varletconst
  • 一個出口條款({}{foo, bar} ,...)
  • ...(更多,但不相關)

{ foo, bar } = bam但將在規範的分配,並沒有任何規則匹配的用例。

要驗證不廣泛支持的語法是否有效,可以使用Babel repl