Коротко

  • === — строгое сравнение: тип и значение.
  • == — нестрогое: сначала приводит типы (coercion), потом сравнивает.
0 == false;   // true
0 === false;  // false
"5" == 5;     // true
"5" === 5;    // false
null == undefined;  // true
null === undefined; // false

Зачем спрашивают

Классика JS-собеса. Хочет увидеть, что ты не ловишь сюрпризы coercion и по умолчанию пишешь ===.

Когда == ещё встречается

Иногда x == null проверяет и null, и undefined одной проверкой. В остальном в современном коде почти всегда === / !==.

Короткий ответ

«=== без приведения типов, == с приведением. В проде почти всегда строгий оператор.»