有人可以使用以下示例数据解释JavaScript Truthy和Falsy。我已阅读其他帖子但仍感到困惑。
var a = 0;
var a = 10 == 5;
var a = 1;
var a = -1;
根据我的理解,我相信var a = 1;
是唯一真正的,其余的都是假的 - 这是正确的吗?
答案 0 :(得分:33)
据我了解,我相信var a = 1;是唯一的真理,其余的都是假的 - 这是正确的吗?
否。
var a = 0;
数字零是 falsy 。但请注意,字符串零"0"
是真实的。
var a = 10 == 5;
这与var a = (10 == 5);
相同,因此 falsy 。
var a = 1;
var a = -1;
包括负数在内的任何非零数字都是 truthy 。
引自MDN
在JavaScript中,truthy值是在布尔上下文中求值时转换为true的值。所有值都是真实的,除非它们被定义为假(即
false
,0
,""
,null
,undefined
和{{1}除外})。
JavaScript中的虚假值列表: From MDN
NaN
false
null
undefined
0
NaN
''
答案 1 :(得分:12)
有一种简单的方法可以检查,现在可以永久使用:
document.all
即便:
function truthyOrFalsy(a) {
return a ? "truthy" : "falsy";
}
答案 2 :(得分:2)
Truthy->在布尔上下文中解析为true的值
Falsy->在布尔上下文中解析为false的值
为更好地理解,下面给出了falsy
值。
false
0
empty string
null
undefined
NaN
答案 3 :(得分:1)
错误
注意:空数组([])不是虚假
真实
答案 4 :(得分:1)
在JavaScript中,&&
和||
并不总是产生布尔值。这两个运算符总是返回其操作数表达式之一的值。使用双重否定!!
或Boolean
函数,可以将“ truthy”和“ falsy”值转换为正确的布尔值。
true && true =>
true
true && false =>
false
true && 'rahul626'=>
"rahul626"
true && 'i am testing Truthy' && ' upvote it'=>
" upvote it"
答案 5 :(得分:0)
简而言之,伪造值只有6种类型: 您可以使用此代码片段对其进行测试:
useEffect(async () => {
const data = await fetch(...);
const json = await data.json();
// etc.
});
return (
//... your code
);
有关详情,请访问此网站:https://developer.mozilla.org/en-US/docs/Glossary/Falsy
答案 6 :(得分:0)
检查Falsy值和True值的简便方法
function truthyOrFalsy(val){
if(val){
console.log (`${val} is truthy`);
} else{
console.log (`${val} is falsy`);
}
}
检查所有FALSY值:
truthyOrFalsy(false); //Output: false is falsy
truthyOrFalsy(null); //Output: null is falsy
truthyOrFalsy(0); //Output: 0 is falsy
truthyOrFalsy(''); //Output: is falsy [blank refers to '']
truthyOrFalsy(NaN); //Output: NaN is falsy
truthyOrFalsy(undefined); //Output: undefined is falsy
请注意,
undefined
并未明确用于设置为值。 某些常见情况会创建未定义的内容:
- 在函数中定义但在回调函数中未传递参数的参数。
- 如果函数没有返回结果
- 如果访问未定义的对象属性/方法
- 如果访问未定义的数组元素
function add(num1, num2){
console.log(num1, num2);
}
const result = add(44);
console.log(result);
//Output: 44 undefined
// undefined
const car = {color:"Blue", price: 200000};
console.log(car.category);
//Output: undefined
arrColors = ["Blue", "Sky", "Purple"];
console.log(arrColors[5]);
//Output: undefined
检查所有真实值
除非定义为虚假,否则所有值都是真实的。
尽管
' ', '0', -1, []
可以参加检查。
truthyOrFalsy(' '); //Output: is truty [blank refers to space inside
// quote ]
truthyOrFalsy('0'); //Output: 0 is truty
truthyOrFalsy([]); //Output: is truty [blank refers to an empty array]
truthyOrFalsy(-1); //Output: -1 is truty
答案 7 :(得分:0)
另一个检查版本:
function truthyOrFalsy(a) {
return (a && "truthy") || "falsy";
}
答案 8 :(得分:0)
另一种评估我喜欢使用的东西是真还是假的方法是
function truthyOrFalsy(a) {
return !!a;
}