JavaScript中如何仅在值为undefined时设置默认值?
仅针对undefined设置默认值的优雅方案
在JavaScript中,||运算符会将所有假值(包括false、0、空字符串等)都触发默认值,无法满足仅在值为undefined时使用默认值的需求。以下是几种优雅的解决方案:
1. 空值合并运算符(??)
ES2020引入的空值合并运算符是最贴合需求的方案,它仅在左侧值为null或undefined时返回右侧的默认值,其他任何假值都会被保留,且只需调用一次目标函数:
let mySettings = settings.getSync('aBooleanKey') ?? true;
示例效果:
- 当
settings.getSync('aBooleanKey')返回false时,最终值为false - 当返回
undefined或null时,最终值为true
2. 兼容旧环境的替代方案
如果运行环境不支持ES2020,可以用立即执行函数包裹单次函数调用,避免重复执行:
// 普通函数写法 let mySettings = (function(val) { return val === undefined ? true : val; })(settings.getSync('aBooleanKey')); // 箭头函数简化写法 let mySettings = (val => val === undefined ? true : val)(settings.getSync('aBooleanKey'));
内容的提问来源于stack exchange,提问作者Nicholas
相关产品推荐
相关产品推荐

