【问题标题】:Javascript implicit parameter names for lambdaslambda 的 Javascript 隐式参数名称
【发布时间】:2017-06-15 08:43:59
【问题描述】:

Javascript/ES8 是否有速记参数名称,例如 Swift?

例如。 arr.sort { $0.name > $1.name }

【问题讨论】:

  • 没有 ES8 这样的东西。如果您指的是现代 ES 版本,它们被“Javascript”覆盖,并且提案被称为 ES.next。 JSX 标签在这里看起来无关紧要,我建议添加 Swift 标签,因为它对于理解要点至关重要。

标签: javascript swift ecmascript-next


【解决方案1】:

Javascript 中没有速记参数。最接近的替代品是 arguments 和 ES6 剩余参数。

function fn(param1, param2) {
  const $ = arguments;

  // by name
  console.log(param1, param2);

  // by order
  console.log($[0], $[1]);
}

Rest 参数比arguments 更一致,箭头函数不支持后者:

const fn = (...$) => {
  // by name
  let [param1, param2] = $;
  console.log(param1, param2);

  // by order
  console.log($[0], $[1]);
}

请注意,$ 参数名称用于与 Swift 进行类比。在实践中不建议使用$ 名称,因为它可能会与传统的jQuery $ 变量混淆。包含所有参数的剩余参数的常规有意义名称是args

【讨论】:

  • 我会将...$ 更改为...args 之类的内容,这样更易​​于阅读。否则,很好的答案!
  • let { param1, param2 } = $; 应该是let [ param1, param2 ] = $,因为rest 运算符返回Array。但重点是:OP 是关于速记参数而不是类似的东西。
  • @Mr.Baudin 谢谢。 $ 仅用于与 Swift 进行类比。 args 更加传统和方便。
  • @estus 我明白,你是对的。只是想添加注释以提供更“javascripty”的参数命名方式。 “我会改变”并不是针对您的答案,而是针对解决方案的总体思路。 - 我应该写一个更好的评论。很好的答案,很抱歉混淆了。
【解决方案2】:

不,javascript 不支持shorthand argument name

【讨论】:

    猜你喜欢
    • 2021-10-31
    • 1970-01-01
    • 2015-06-04
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多