【问题标题】:Is it possible to use a default parameter within an expression before its defined?是否可以在定义之前在表达式中使用默认参数?
【发布时间】:2020-03-11 16:18:28
【问题描述】:

我有一个函数,它的值总是需要转换。我想知道是否有一种方法可以在它到达函数体之前获取值并使用一些除法?现在我正在做身体的划分,但一直在寻找一种新的更好的做事方式:

// Prices come in the the form of thousands (e.g. 24 => 2400) so division is necessary here
const formatPrice = (price = (price / 100), commaSeparated = true) => {
  if (commaSeparated) {
    return value.toLocaleString('en-GB', {
      minimumFractionDigits: 2
    });
  }

  return value;
}

上面我会得到错误:

'price' was used before it was defined

【问题讨论】:

  • 默认值在没有实际参数传递时发挥作用。鉴于此,您希望表达式实际做什么?
  • 我不禁要问你为什么要这样做?与仅在函数中执行此操作相比有什么好处?
  • @Pointy 我想我想在值到达正文之前对其进行预格式化。
  • 我同意尼特的观点;如果“price”每次在此函数中使用时都需要除以 100,则让除法成为函数的一部分。
  • 对,但这不是默认参数机制的用途。它用于在对函数的实际调用中没有传递任何值时提供一个值。

标签: javascript ecmascript-6 default-value


【解决方案1】:

虽然这并不是最好的处理方式,但一种可能的方法是添加一个额外的参数并将其默认值用作表达式,如下所示:

const formatPrice = (price, commaSeparated = true, dividedPrice = price / 100) => {
}

只要您不使用 3 个参数调用该函数,这将按预期工作。不过,我建议您只需在函数内部进行除法即可。

【讨论】:

    猜你喜欢
    • 2012-12-24
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2017-05-24
    • 1970-01-01
    相关资源
    最近更新 更多