if (newArr === [])
Потому что это сравнение ссылок двух массивов, а не проверка массива на пустоту.
[] - новый пустой массив. То есть в памяти выделилось пространство для нового массива.
Даже если newArr тоже [] то это не одно и то же, потому что массивы это
ссылочный тип данных. То есть для newArr так же выделена отдельная память для массива.
Коротко: [] !== [] потому что области памяти разные для двух разных пустых массивов.
ну и примитивная аналогия: два пустых одинаковых ящика это же не один и тот же ящик, верно?