我有一个函数返回一个值,如果条件满足则该值为true,否则返回false,但是如果出现错误,该函数也可以返回一个字符串消息。
我需要在正常条件下区分true / 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()
...但我还没弄明白如何创建一个行为方式的{{1}}函数。有任何想法吗?
答案 0 :(得分:6)
根据这个:
@Esailija为什么没有意义?如果是真,则返回true,如果为false 返回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('');
}
答案 1 :(得分:2)
什么构成虚假?如果我必须将字符串转换为布尔值,我会引用一个字符串表,该表应转换为false。
var falsableStrings = {
"fff": true,
"false": true
}
function isFalseString(str) {
return ! falsableStrings[str.toLowerCase()]
}
另一种方法是使用RegEx:
function isFalseString(str) {
return ! (str == "" || str.match("(fff|false)"))
}
答案 2 :(得分:0)
这是你要找的吗?
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