1. Объекты/массивы с одинаковым значением, если они не являются одной переменной, не равны.

Это правда. Вы можете зайти в консоль и проверить прямо сейчас.

[] === []
false
[] == []
false

Это происходит потому, что объекты/массивы хранятся в памяти. Символы равенства === и == проверяют один и тот же экземпляр, за некоторыми исключениями. Исключения не включают объекты/массивы с одинаковым значением, которые не являются точно такой же переменной. Под «точно такой же переменной» я подразумеваю:

const myVariable = [];
myVariable === myVariable
true
myVariable == myVariable
true

Обходной путь для этого - использовать JSON.stringify:

JSON.stringify([]) === JSON.stringify([])
true
JSON.stringify([]) == JSON.stringify([])
true

2. NaN не равно NaN.

Да. NaN === NaN (и даже NaN == NaN) возвращает false. Вы должны использовать isNaN(NaN).

3. Массивы на самом деле являются объектами.

typeof([]) возвращает object.

4. Деление на ноль дает разные результаты.

0 / 0
NaN
1 / 0
Infinity
-1 / 0
-Infinity

5. JavaScript автоматически вставляет точки с запятой.

function a() {
    return {
        b: "c"
    };
}
function b() {
    return
    {
        c: "d"
    };
}
a()
Object: { b: "c" }
b()
undefined
// Yet these are the same...
try {
    // ...
} catch (err) {
    // ...
}
// and
try {
    // ...
}
catch (err) {
    // ...
}