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

How can I differentiate between a boolean and a string return value using JavaScript?

本文关键字:字符串 返回值 分布 何使用 JavaScript      更新时间:2023-09-26

我有一个函数,如果满足条件,则返回一个值,如果满足条件,该值可以为真,如果满足条件,则返回 false,但该函数也可以在发生错误时返回字符串消息。

我需要在正常情况下区分真/假布尔值,而不会将字符串值误认为任何一个。我的策略是使用一个parseBoolean()函数,该函数在传递布尔输入时将返回一个真正的布尔类型真/假值,但在传递字符串时返回一个不是布尔类型false的"假"值。

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.
    }
  }
}

。但我还没有弄清楚如何创建一个以这种方式运行的parseBoolean()函数。有什么想法吗?

根据这个:

@Esailija 为什么没有意义?如果它是真的,则返回一个真,如果它是假的 返回 false,如果它是 'somestring' 也返回 false。明白了吗?– 注册用户 31 秒前

你想要

function parseBoolean(value) {
    return typeof value == "boolean" ? value : false;
}

但这显然无法通过厄运的考验。


此代码通过所有测试:
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('');
}

什么构成假?如果我必须将字符串转换为布尔值,我会引用一个应该转换为 false 的字符串表。

var falsableStrings = {
    "fff": true,
    "false": true
}
function isFalseString(str) {
    return ! falsableStrings[str.toLowerCase()]
}

http://jsfiddle.net/n8dEF/

另一种方法是使用正则表达式:

function isFalseString(str) {
    return ! (str == "" || str.match("(fff|false)"))
}

http://jsfiddle.net/n8dEF/2/

这是你要找的吗?

var parseBooleanGenerator = function(aPerfectString) {
  return function(someStringFromWild) { 
    return aPerfectString === someStringFromWild 
  };
};
var goodString = 'FFF';
var badString = 'FfF';
console.log(parseBooleanGenerator('FFF')(goodString)); // true
console.log(parseBooleanGenerator('FFF')(badString)); // false

。或。。。

var checkForFFF = parseBooleanGenerator('FFF');
console.log(checkForFFF(goodString)); // true
console.log(checkForFFF(badString)); // false