TaskWrite sumOrEcho(x): if x is an array, return sum of all elements; else return x unchanged. Log sumOrEcho([1,2,3]), sumOrEcho("hi"), sumOrEcho(42), sumOrEcho([]).
Array.isArray — when typeof lies
100 XP7 min
Theory
typeof can't see arrays
typeof [] is "object". Same as typeof null, typeof {}, typeof new Date(). Useless for telling arrays apart from plain objects.
typeof []; // "object"
typeof { a: 1 }; // "object"
typeof null; // "object"
Array.isArray([]); // true
Array.isArray({ a: 1 }); // false
Array.isArray(null); // falsesumOrEcho
A real shape you'll write:
function sumOrEcho(x) {
if (Array.isArray(x)) {
return x.reduce((s, n) => s + n, 0);
}
return x;
}
sumOrEcho([1, 2, 3]); // 6
sumOrEcho("hi"); // "hi"
sumOrEcho(42); // 42Why not instanceof Array?
instanceof Array fails for arrays from a different window (iframes, web workers — they get their own Array constructor). Array.isArray is the safe answer.
🔒
Sign up to start coding
Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial — card required, cancel anytime.
Sign up — free trial →First 10 lessons in each track are free. No card needed for those.