首页 > 解决方案 > 从 Javascript 代码中删除 ifs

问题描述

我可以在 JS 的函数式编程中不使用 if 语句进行编程吗?

在 Haskell 中,您可以进行模式匹配:x > 0 = 1 | x == 0 = 0 在js中:

sing = x => {
  if (x > 0) return 1;
  else if (x == 0) return 0
}

如果操作员是这样的,我可以做速记:

sign = x => x > 0 ? 1 (x == 0 ? 0 : x)

如果没有库和 ?: 运算符,我可以使代码更短吗?

标签: functional-programming

解决方案


这可能不是您要寻找的答案,但编写此代码的最短方法是:

return !!x+0; 

解释

  • !!x 将 x 转换为布尔值:x>0 == true x = 0 == false;
  • +0 转换为整数:真 = 1,假 = 0。

但是除了使用 ?: 运算符之外没有其他风格。

javascript 速记实用性

在 javascript 中,您还有其他有用的技巧,例如:

  • 自动将事物转换为 thruties 或 falsies。(当需要布尔值时)
  • 或运算符返回值,便于空值合并:var name = null || 'joel' // name = 'joel'

推荐阅读