Не работает проверка нескольких значий зачений в if, почему?
long === 0 и long === null можно проверить !long
а на Nan можно проверять только isNaN()
name === '' и name === null можно проверять !name
итого получаетсяif (long && !isNaN(+long) && lat && !isNaN(+lat) && name) { ... }
если нужно проверит что name это строка, то typeof
просто null приводится к false.
А у вас логическое И.
Если long равно какому то числу, например 21 - проверка будет(21 !== 0 && true && false)
а так, как у вас И - последний фолс сделает утверждение ложным.(long !== 0 && !isNaN(long)&& long!== null) &&
 (lat !== 0 && !isNaN(lat) && lat !== null) &&
 (name !== "" && name !==  null)
Как то так надо.
Еще учтите, NaN - это не строка, а резервированное слово, поэтому скобочки я убрал