如何使用JavaScript区分布尔值和字符串返回值?

Reg*_*ser -6 javascript boolean

我有一个函数返回一个值,如果满足条件可以为true,否则返回false,但函数也可以在出错时返回一个字符串消息.

我需要在正常条件下区分true/false布尔值,而不会误解任何一个的字符串值.我的策略是使用一个parseBoolean()函数,它在传递布尔输入时返回一个真正的布尔类型的true/false值,但是false当传递一个字符串时,它是一个不是布尔类型的"falsy"值.

function validate(kkk)
{
  //... some check that validates 
  return true;
  //... some check that doesn't validate
  return false;
  //... failure - return explanation
  return 'Error Message jjjjjjjj';
}

function usingit(data)
{
  if(parseBoolean(validate(data)) != false)
  {
    /// the value is Boolean true
  }
  else
  {
    if(parseBoolean(validate(data)) === false)
    {
      /// the value is Boolean false
    }
    else
    {
      /// the value is false but not of a Boolean type 
      /// so we will display it as the error message text.
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

...但我还没弄明白如何创建一个parseBoolean()行为方式的函数.有任何想法吗?

Esa*_*ija 6

根据这个:

@Esailija为什么没有意义?如果是true则返回true,如果是false则返回false,如果是'somestring'也返回false.得到它? - 注册用户31秒前

你要

function parseBoolean(value) {
    return typeof value == "boolean" ? value : false;
}
Run Code Online (Sandbox Code Playgroud)

但这显然不会通过厄运的考验.


此代码传递所有测试:

function parseBoolean(bool) {
    return typeof bool == "boolean" ? bool : 0;
}

if( parseBoolean('anystring') == false ) {
    alert("");
}

if( parseBoolean('anystring') !== false ) {
    alert("");
}

if( parseBoolean(true) ) {
    alert('');
}

if( !parseBoolean(false) ) {
    alert('');
}
Run Code Online (Sandbox Code Playgroud)