问题归总:变量的类型判断
场景:一个Boolean参数,判断是否定义,如果已定义则返回储存的值,如果未定义则返回true
省流:直接跳到解决方案
错误写法
一开始可能都习惯性的用三目表达式来实现
例如:
var result = (arg) ? arg : true;
结果发现不管存储值是什么,返回的都是true
原因分析:
提示:仔细思考下,这里的逻辑
arg == true // 返回 true
arg == false // 返回 true
arg = undefined // 返回 true
因此需要改写下逻辑:
var result = (arg == false) ? false: true;
arg == false // 返回 false
arg == true // 返回 true
arg = undefined // 返回 true
抛砖:但是这句语法的逻辑还是绕弯了,思考思考优化一下吧
解决方案:
引玉:判断这个逻辑,其实就是两个方向的选择,正确or错误、动or静,而上面的逻辑思维是从
如果变量等于fasle
的判断方向走的,那么为何不反过来想呢?
简化的写法:
var result = (arg !== false);
arg == false // 返回 false
arg == true // 返回 true
arg = undefined // 返回 true