如何使用 JavaScript 区分布尔值和字符串返回值
How can I differentiate between a boolean and a string return value using JavaScript?
我有一个函数,如果满足条件,则返回一个值,如果满足条件,该值可以为真,如果满足条件,则返回 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
相关文章:
- Javascript返回值只在循环中返回一次
- XMLHttpRequest未返回值-状态202
- 根据是否解析了 Promise 从函数返回值
- 如何使用 JavaScript 区分布尔值和字符串返回值
- 筛选字符串和返回值
- React 组件中的字符串插值,其中包含从服务器返回的字符串
- 删除XML字符串中的返回值
- 如何在 javascript 中使字符串转换函数返回值
- 从Ajax JQuery获取返回字符串的值
- 使用字符串值作为对象的属性来查找属性的返回值
- Meteor以字符串形式返回值
- 如何将查询字符串值传递到.ashx并在Javascript中返回值
- Javascript forEach返回值插入到字符串中
- 为什么隐藏输入元素的.attr('value')没有从html字符串返回原始值
- 我如何提取多行字符串返回类型的值
- getJSON并返回值字符串
- 如何将字符串从javascript传递到服务器?然后从asp.net web表单中的服务器获取返回值
- Regex:将模式中的字符串替换为函数的返回值
- 爪哑脚本 |向字符串添加值将返回未定义
- JavaScript -如果一个函数作为参数传递,在函数求值之前,它可以作为字符串返回吗?