Mam funkcję w JavaScripcie, która w skrócie wygląda tak:
static every2D(array2D, fn) {
if (!(Array.isArray(array2D) && array2D.every(arr => Array.isArray(arr)))) {
throw new TypeError(`The value is not a 2D array: ${array2D}`);
}
... // cośtam
}
Nieważne co robi – ważny jest warunek w instrukcji if
. Podczas debugowania w Visual Studio Code ewaluuję wyrażenia array2D
oraz array2D.every(arr => Array.isArray(arr))
i otrzymuję takie wyjście:
-
Dla wyrażenia
array2D.every(arr => Array.isArray(arr))
:array2D.every(arr => Array.isArray(arr)) true
-
Dla wyrażenia
array2D
:array2D Array(5) […, Array(5), Array(5), Array(5), Array(5)] length:5 __proto__:Array(0) [, …] 0:undefined 1:Array(5) [exports.Cell, exports.Cell, exports.Cell, …] 2:Array(5) [exports.Cell, exports.Cell, exports.Cell, …] ... // dalsze elementy tablicy
Dla mnie jest tu oczywiste, że tablica nie zawiera wyłącznie tablic. Czemu więc wyrażenie z every
powyżej mówi, że zawiera? Może czegoś nie widzę?