【问题标题】:Fat arrow conditional in mapping映射中的粗箭头条件
【发布时间】:2018-05-16 18:02:40
【问题描述】:

只是想知道在 javascript 或 typescript 中是否有一种方法可以在元素映射本身中编写粗箭头函数的条件?

当前代码

functionName(data => {
  if(data){
  }
});

是否有语法在 data 到达 if 语句之前检查它?

类似

functionName(data? => {
   if(data){ // This code is then not needed
   }
});

或者

functionName(!data => {
   if(data){ // This code is then not needed
   }
});

这样它只有在data 为假时才传递给函数。

谢谢

【问题讨论】:

  • 你能在“正常”函数中这样做吗?
  • 请添加一个你喜欢做什么和你想得到什么的例子。
  • @NinaScholz - 我认为它需要一些符号,其中一个函数在没有if 或类似语句的情况下有条件地执行
  • 所以functionName 是一个将另一个函数作为参数的函数。在这种情况下,如果data 为空或未定义,函数functionName 可以实现不调用参数函数的逻辑。如果你能提供一个体面的例子,回答这个问题会容易得多。
  • 不,if 语句没有任何问题,我只是好奇是否有短手,但基本上就像你说的 falsey 而不是 not null 具体

标签: javascript typescript


【解决方案1】:

为什么不在运行函数之前检查data

functionName(data => {
  if(data){
  }
});

我们使用:

functionName(data => {
  // do something with data
});

data && functionName(data); // call the function when data is valued 

基本上,没有办法按照您的期望签入该函数,因为该函数已被触发并立即使用您提供的data 作为参数。 data 只是在你的函数中用作参数,没有更多的外部角色。所以虽然你可以访问data,这意味着你已经在函数内部了。

【讨论】:

  • 这是因为该功能可以在我的代码之外(在组件中)触发我的意思是我可以在之前进行检查,但它只适用于特定用户操作的操作......我会错过一个如果用户在警报之外点击,他们会采取行动。这不是问题,只是想知道 typescript 或 es 是否为此提供了快捷方式,似乎有很多有用的快捷方式......所以想知道
【解决方案2】:

基本上,您正在使用匿名箭头函数作为参数调用 functionName()。箭头函数也接受一个名为 data 的参数。

所以当你检查数据时,这意味着你已经以匿名箭头函数作为参数调用了functionName。所以基本上,我认为你不能做你要求的。

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 2013-07-23
    • 2011-06-14
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2012-04-01
    • 2010-12-01
    • 2021-08-18
    相关资源
    最近更新 更多