functional-programming - 从 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)
如果没有库和 ?: 运算符,我可以使代码更短吗?
解决方案
这可能不是您要寻找的答案,但编写此代码的最短方法是:
return !!x+0;
解释
- !!x 将 x 转换为布尔值:x>0 == true x = 0 == false;
- +0 转换为整数:真 = 1,假 = 0。
但是除了使用 ?: 运算符之外没有其他风格。
javascript 速记实用性
在 javascript 中,您还有其他有用的技巧,例如:
- 自动将事物转换为 thruties 或 falsies。(当需要布尔值时)
- 或运算符返回值,便于空值合并:
var name = null || 'joel' // name = 'joel'
推荐阅读
- cordova - 科尔多瓦的“恢复和保存状态”?
- javascript - 在 chromev73 中阻止 jaavscript 时,我看到空白页而不是呈现网页
- c - 打开 FIFO 以及写入/读取 FIFO 的超时
- css - div 样式对输入类型文本不起作用
- macos - macOS 屏幕保护程序键盘交互
- c++ - 如何根据登录创建单独的菜单
- java - @Query 不接受 LIKE 来执行细粒度搜索
- java - 如何检查应用程序是否安装了我的链接或已取消?
- redux - 如何将查询缩减器、removekey 和其他模块从 admin-on-rest 导入到自定义列表?
- c++ - 将智能指针传递给模板类成员函数时出现编译错误