使用三元运算符处理未定义的布尔值

时间:2018-03-06 01:56:43

标签: javascript ecmascript-6

function myFunc(trueOrFalse) {
   return trueOrFalse ? true : false
}

上面的函数可以写成myFunc(trueOrFalse) => trueOrFalse,但是如果不存在trueOrFalse怎么办?这就是为什么我写第一个函数显式在布尔值中返回true或false。

3 个答案:

答案 0 :(得分:2)

你可以加倍否定那个对象。

基本上,它用于将truthy - falsy值转换为布尔值。 Reference

var myFunc = (trueOrFalse)=> !!trueOrFalse;

console.log(myFunc());
console.log(myFunc('hello'));
console.log(myFunc(true));
console.log(myFunc(false));
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

使用EcmaScript6可以在函数参数中设置默认值 比如

function myFunc(trueOrFalse = false){
   return trueOrFalse ? true : false;
}

ECMASCRIPT6和IE 并非IE 11或更低版本支持EcmaScript6的所有方面,这意味着如果在函数参数中设置默认值,则会出现问题

答案 2 :(得分:0)

没有赋值的函数参数是undefined,它是falsy值。所以你可以写:

function myFunc(trueOrFalse) {
   return trueOrFalse
}

致电myFunc()将返回undefined falsy。请注意falsy不等于false

if(false) {
    // it will not be executed
}

if(undefined){
    // it will not be executed
}

// but:
false == undefined // false

因此,根据您的需求,您需要将其转换为false,一种方法可能正在使用default parameters

function myFunc(trueOrFalse = false) {
   return trueOrFalse
}

现在调用myFunc()将返回false,例如。