我正在编写一些代码来确定是否需要使用模拟数据。这是代码:
let useMocks = false
const setMockSwitch = ({idNumber}) => {
if (idNumber && idNumber === mockUser.idNumber) {
useMocks = true
}
if (idNumber && idNumber !== mockUser.idNumber) {
useMocks = false
}
}
如果idNumber传递给该函数,并且它等于一个模拟用户,而不是“切换”开关...
我正在尝试考虑逻辑解决方案,如何缩短代码并使之更具可读性。多谢您的协助!谢谢!
答案 0 :(得分:4)
好吧,您可以利用比较产生布尔值的事实:
const setMockSwitch = ({idNumber}) => {
if (idNumber)
useMocks = idNumber === mockUser.idNumber;
};
哦,请注意,如果mockUser.idNumber
可以一直是0
,那么这将有问题(与原始代码一样),因为0
在这样的代码中以false
的身份进行测试
答案 1 :(得分:0)
假设mockUser.idNumber
具有您想要的实际值,您就可以做到,
const setMockSwitch = ({idNumber}) => {
useMocks = idNumber === mockUser.idNumber;
}
答案 2 :(得分:0)
您可以将其简化为单线箭头功能。通过利用短路&&
运算符,可以确保仅在定义useMocks
的情况下设置idNumber
let useMocks = false
const setMockSwitch = ({idNumber}) => idNumber && (useMocks = idNumber === mockUser.idNumber)
您也可以将其编写为无副作用,
const shouldUseMocks = ({idNumber}) => idNumber === mockUser.idNumber
idNumber && useMocks = shouldUseMocks({idNumber})
这使您可以将此方法提取到帮助程序库中并重新使用,因为它不会直接从外部范围修改变量。这是我的首选和推荐方式。
如果您想将0
视为有效的idNumber
,
let useMocks = false
const setMockSwitch = ({idNumber}) => idNumber !== void 0 && (useMocks = idNumber === mockUser.idNumber)
void 0
始终返回true primitive undefined
,而不返回任何称为undefined
的局部变量,因此这是检查未定义的最干净的方法。实际上,您可以将void operator放在任何其他表达式的前面,以强制其返回undefined