【问题标题】:ES6 export the result of a functionES6 导出函数的结果
【发布时间】:2017-04-18 15:49:40
【问题描述】:

我正在尝试在 ES6 中导出函数的结果。该功能不重要 - 以下示例适用于:const func = input => input

这行得通:

const a = 'foo'
const b = 'bar'

export default {
  a: func(a),
  b: func(b)
}

而这些错误:SyntaxError: Unexpected token, expected ,:

export {
  a: func(a),
  b: func(b)
}

还有:

export {
  func(a) as a,
  func(b) as b
}

你能解释一下为什么吗? This 似乎没有涵盖上述情况。

【问题讨论】:

  • 能否包含原始代码,您给出的示例没有任何问题-您使用的是转译器吗?

标签: javascript ecmascript-6 export


【解决方案1】:

你可以的

const aArg = 'foo'
const bArg = 'bar'

export const a = func(aArg);
export const b = func(bArg);

命名导出需要一个变量名才能导出,不能导出任意表达式结果。

【讨论】:

  • 谢谢。我知道我能做什么,但我不明白我不能做什么。为什么func(a) as a 不等于给func(a) 的结果命名?
  • X as Y 特别是 variable name AS variable name 所以你不能在那里调用函数。我想这在技术上是允许的,但它似乎不会经常出现,因为通常你要导出一个已经存在的变量。
  • 你有这方面的参考吗?
  • @Henry:export 的语法规则:ecma-international.org/ecma-262/7.0/#sec-exports
【解决方案2】:
export default ...

您正在导出单个对象、类、函数等。

export (Object, Class, Function) ...

您要导出许多对象、类、函数等,因此您必须为其指定一个名称。

第一个例子有点像你在一所学校教书并且有一个学生。你知道那个学生是谁以及如何称呼他,因为他是那里唯一的一个。然而,第二个例子就像教一个有很多学生的班级,你需要某种类型的命名来调用正确的学生。

【讨论】:

    猜你喜欢
    • 2017-02-23
    • 1970-01-01
    • 2016-06-03
    • 2018-08-16
    • 2017-08-28
    • 2020-06-30
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多