我无法让我的函数返回布尔值为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',请注销以下消息之一,对应于 测试值的类型。
答案 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();