在JavaScript函数中返回布尔值true或false

时间:2019-04-27 23:43:41

标签: javascript

我无法让我的函数返回布尔值为false时提供的语句。

尝试将Boolean()添加到代码中,尝试使每种可能的结果看起来像

singleArg“ 0” || singleArg“某物”等

function isTruthy(singleArg) {
  let isitTrue = '';
  if (singleArg === 'somecontent' || 1 || [2, 3, 4], {
      name: 'Alex'
    }) {
    isitTrue = true;
  } else if (singleArg === false || null || undefined || 0 || "") {
    isitTrue === 'The boolean value false is falsey';
    isitTrue === 'The null value is falsey';
    isitTrue === 'undefined is falsey';
    isitTrue === 'The number 0 is falsey';
    isitTrue == 'The empty string is falsey (the only falsey string)';
  }
  return isitTrue;
}

console.log(isTruthy(('somecontent')));

编写一个函数isTruthy,该函数可以接受任何类型的单个参数。

isTruthy如果该参数为'truthy',则应返回true。

如果该值为'falsey',请注销以下消息之一,对应于 测试值的类型。

3 个答案:

答案 0 :(得分:1)

您可以使用switch statement并直接检查值。

在这种情况下,使用return statement可以省略break statement,因为return终止了函数的执行,因此终止了switch

function isTruthy(value) {
    switch (value) {
        case false:
            return 'The boolean value false is falsy';
        case null:
            return 'The null value is falsy';
        case undefined:
            return 'undefined is falsy';
        case 0:
            return 'The number 0 is falsy';
        case '':
            return 'The empty string is falsy (the only falsy string)';
    }
    return Boolean(value);
}

console.log(isTruthy(false));
console.log(isTruthy(null));
console.log(isTruthy(undefined));
console.log(isTruthy(0));
console.log(isTruthy(''));
console.log(isTruthy(NaN)); // false
console.log(isTruthy(true));
console.log(isTruthy({}));
console.log(isTruthy(1e3));
console.log(isTruthy('yes!'));
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

它总是会返回true,因为您在第一个if块中|| 1.总是评估为真。

如果您希望将singleArg与值1进行比较,则需要编写singleArg === 'somecontent' || singleArg === 1 ...

此外,对于您的第二个if块,所有这些值始终求值为false。您实际上可以简单地写:

if (!singleArg)

无论值是false,null,undefined,0还是空字符串,都会始终返回false。

答案 2 :(得分:0)

正如人们已经指出的那样,您只需检查!Boolean(arg)

以下是关于如何重写该功能的建议:

function isTruthy(singleArg) {
  if ( !Boolean(singleArg) ) {
    switch( typeof singleArg ) {
      case "boolean":
        console.log( "The boolean value false is falsey" );
        break;

      case "object":  // typeof null is an object
        console.log( "The null value is falsey" );
        break;

      case "undefined":
        console.log( "undefined is falsey" );
        break;

      case "number":
        console.log( "The number 0 is falsey" );
        break;

      case "string":
        console.log( "The empty string is falsey (the only falsey string)" );
        break;

      default:
        console.log( "NaN?" );
        console.log( typeof singleArg );
        break;
    }
    return;
  }
  console.log( true );
}

isTruthy();