Skip to main content
JavaScript & the browser·Module C5 · Lesson 3
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);      // false

sumOrEcho

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);         // 42

Why 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.

PreviousNext lesson →

Get one Python or web tip a day — by email

Short, hand-written, no spam. Unsubscribe in one click.