"In" 運算子異常:如果數組不包含“0”,為什麼Test 返回True 為“0”
The "in JavaScript 中的" 運算子提供了檢查物件中是否存在屬性或陣列中是否存在元素的方法。當測試數組中的元素時,人們可能會期望「in」運算子僅在數組包含具有該精確值的元素時才傳回 true。然而,在測試數組中的“0”時,“in”運算符的行為似乎出乎意料。
考慮以下範例:
var x = [1, 2];
0 in x;
即使數組 x 不包含值“0”,也會傳回 true。這種看似矛盾的行為的原因在於「in」運算子的本質。
瞭解「in」運算子
「in」運算子測試是否屬性或元素存在於物件或陣列中。但是,需要強調的是,該運算子檢查屬性或元素是否存在,而不一定是否存在特定值。
對於數組,「in」運算子會驗證特定索引是否存在存在於數組中,如果具有特定值的元素出現在該索引處則不存在。這表示測試陣列中的「0」會檢查索引 0 處是否存在元素,而不管該元素的值為何。
範例應用
在我們的範例陣列 x 中,「0」運算子測試索引 0 處是否存在元素。由於陣列在 JavaScript 中是零索引的,因此索引 0 是具有兩個元素的陣列的有效索引。因此,即使數組中不存在值為「0」的元素,「in」運算子也會傳回 true。
要點
“in” “如果人們誤解了操作員的目的,其行為可能會令人困惑。它不測試特定值是否存在,而是測試特定索引或鍵處是否存在元素或屬性。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3