有时我们在一段代码中需要定义一个变量是某个值的引用,同时需要确保这个值是存在的。
比如在express的某个接口里,我们有一些参数要求是用户必须传入的,这时候如果不进行验证执行继续运行的话,就会出现各种问题。因此校验参数是必须的。
原代码
使用if判断,容易导致代码里出现大量的if判断,不优雅
try {
// sid 是必填参数。
let sid = req.body.sid;
if(!sid) {
throw Error('缺少必填参数')
}
// do someting
}catch (err) {
// do err
}
改良代码(简洁优雅)
使用当即执行函数,代码量虽然没有明显减少,但是一行完成,看起来舒服多了
try {
// sid 是必填参数。
let sid = req.body.sid || (() => { throw Error('缺少必填参数') })();
// do someting
}catch (err) {
// do err
}
同时需要验证多个必填参数
let sid = req.body.sid;
let uid = req.body.uid;
let name = req.body.name;
(sid && uid && name) || (() => { throw Error('缺少必填参数') })()
总结
表达式里一般是不允许执行代码的,这时候我们可以就可以通过当即执行函数达到我们的目的