isTrue

用一个函数来判断一个值是否真的是true or false,之所以要做这个判断,是为了更加可配的来处理一个问题,就是0,字符串'',以及数字Infinity。

function isTrue(value, {zero = true, infinity = false, emptyString = false, emptyArray = false, emptyObject = false} = {}) {
    if(value === 0) return !!zero
    if(value === '') return !!emptyString
    if(value === Infinity) return !!infinity
    if(Array.isArray(value) && value.length === 0) return !!emptyArray
    if(value === null) return false
    if(typeof value === 'object' && Object.keys(value).length === 0) return !!emptyObject
    return !!value
}

默认更改了上面这些值的返回结果,比如0,默认是返回false,但我认为0是一个明确的数组,应该返回true,而空字符串''则仍然保持返回false,另外,增加了空数组和空对象返回false。源码在这里,可能后期还会更新。

2017-04-21 14:58:37