【问题标题】:ES6 destructuring exec function on parameter参数上的 ES6 解构 exec 函数
【发布时间】:2017-09-14 06:00:59
【问题描述】:

我有以下想法,但我不太确定,如果有任何可能,这会奏效。

是案例:

handleChange({ target: { value } }) {
    const intValue = parseInt(value, 10);
    // doSomething(intValue);
}

应该案例:

handleChange({ target: { value: parseInt(value, 10) } }) {
    // doSomething(value);
}

我想要什么:我想直接在函数的头部将值参数解析为整数。所以我可以在正文中以整数的形式访问它。

我知道,我的 should-state 不是有效的 js 语法,但我想知道,如果有任何可能,我可以实现这一点。

我已经知道,这是有效的:

let {length : len} = 'abc'; // len = 3

所以我正在寻找类似的行为:

let {parseInt : int} = '123'; // int = 3

最好的问候,期待建议,

迈克尔

【问题讨论】:

  • 应该是函数定义,还是函数调用?
  • 我试图澄清自己并编辑了我之前的问题。
  • 我认为您的代码中缺少箭头或函数关键字。
  • 好的,除非这使用对象定义中的方法快捷方式,mh hm。
  • 您可以研究 TypeScript 以避免许多与类型相关的问题。 length 的示例仅适用,因为它是 String 类型的属性。但parseInt 则不同。

标签: javascript parameters ecmascript-6 variable-assignment destructuring


【解决方案1】:

这样的事情会起作用,但有一个问题

为简单起见,我只使用了{ value } 而不是{ target: { value } }

function handleChange({
  value = 10, // declare this first so you can use the variable later
  intValue = parseInt(value, 10) // intValue shouldn't be passed as argument
} = {}) {
  console.log(intValue);
}

handleChange({ value: "100" });

但是当intValue 是函数参数[0] 中的一个属性时,它会给出与预期不同的结果。

handleChange({ value: "100", intValue: 10 });

将在您实际期望它记录 10 时记录 100。所以我不建议这样做,因为这是泄漏的。

【讨论】:

  • 这很好,但正如你提到的,有一个小问题。如果我想通过 jsDoc 记录我的代码,那么我还必须记录第二个参数。我也不喜欢这样,因为有第二个参数
猜你喜欢
  • 2019-04-18
  • 2016-10-30
  • 2023-01-03
  • 2023-03-19
  • 1970-01-01
  • 2017-08-23
相关资源
最近更新 更多