[英]Understanding JavaScript Truthy and Falsy
有人可以使用下面的示例數據解釋 JavaScript 真假。 我已經閱讀了其他主題,但仍然感到困惑。
var a = 0;
var a = 10 == 5;
var a = 1;
var a = -1;
據我了解,我相信var a = 1;
是唯一的真理,而 rest 是虛假的 - 這是正確的嗎?
據我了解,我相信 var a = 1; 是唯一真實的,其余的都是虛假的 - 這是正確的嗎?
不。
變量 a = 0;
數字零是虛假的。 但是,請注意字符串零"0"
是真實的。
變量 a = 10 == 5;
這與var a = (10 == 5);
,所以這是假的。
變量 a = 1;
變量 a = -1;
包括負數在內的任何非零數都是真實的。
引用MDN
在 JavaScript 中,真值是在布爾上下文中計算時轉換為真的值。 所有值都是真實的,除非它們被定義為虛假(即,除了
false
、0
、""
、null
、undefined
和NaN
)。
JavaScript 中的虛假值列表:來自 MDN
false
null
undefined
0
NaN
''
, ""
, ``
(空模板字符串)document.all
0n
:大整數-0
有一種簡單的檢查方法,您可以現在和永遠使用它:
function truthyOrFalsy(a) {
return a ? "truthy" : "falsy";
}
以機智:
> truthyOrFalsy(0)
"falsy"
> truthyOrFalsy(10 == 5)
"falsy"
> truthyOrFalsy(1)
"truthy"
> truthyOrFalsy(-1)
"truthy"
另請參閱JavaScript 中所有錯誤值的列表。
Truthy -> 在布爾上下文中解析為 true 的值
Falsy -> 在布爾上下文中解析為 false 的值
false
0
empty string
null
undefined
NaN
假的
注意:空數組([])不是假的
真實的
以下答案可能對某人有所幫助。
除了類型之外,每個值還具有固有的布爾值,通常稱為真值或假值。 有些規則有點奇怪,所以理解概念和比較的效果有助於調試 JavaScript 應用程序。
以下值總是虛假的:
其他一切都是真實的。 那包含着:
因此,可以在條件內使用單個值。 例如:
if (value) { // value is truthy } else { // value is falsy // it could be false, 0, '', null, undefined or NaN }
在 JavaScript 中, &&
和||
不要總是產生布爾值。 兩個運算符始終返回其操作數表達式之一的值。 使用雙重否定!!
或Boolean
函數,“真”和“假”值可以轉換為適當的布爾值。
true && true =>
true
true && false =>
false
true && 'rahul626'=>
"rahul626"
true && 'i am testing Truthy' && ' upvote it'=>
" upvote it"
另一個檢查版本:
function truthyOrFalsy(a) {
return (a && "truthy") || "falsy";
}
簡而言之,只有 6 種類型的假值:您可以使用此代碼段來測試它們:
function isTruthy(val){
if(val){
console.log(val + ' is Truthy');
}else{
console.log(val + ' is falsy');
}
}
// all below are truthy
isTruthy (true)
isTruthy ({})
isTruthy ([])
isTruthy (42)
isTruthy ("0")
isTruthy ("false")
isTruthy (new Date())
isTruthy (-42)
isTruthy (12n)
isTruthy (3.14)
isTruthy (-3.14)
isTruthy (Infinity)
isTruthy (-Infinity)
//all below are falsy
isTruthy(0);
isTruthy("");
isTruthy(false);
isTruthy(NaN);
isTruthy(null);
isTruthy(undefined);
有關詳細信息,請參閱此站點: https ://developer.mozilla.org/en-US/docs/Glossary/Falsy
檢查假值和真值的簡單方法
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
未明確用於設置為值。 一些常見的場景會創建 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
另一種評估我喜歡使用的事物是真還是假的方法是
function truthyOrFalsy(a) {
return !!a;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.