Задать вопрос
splincodewd
@splincodewd
Developer

Почему интерпретатор указывает нам в выводе тип number?

Провалил на собеседовании этот момент, я так и не понял на уровне основ программирования, почему именно number? Есть описание как это должно работать?

document.body.innerHTML = typeof (1 / []);

Дома потестировал:
// при работе с нулевым указателем
document.body.innerHTML  = "1. " +  typeof (1 / undefined) + "<br>";
document.body.innerHTML += "2. " + typeof (1 * null) + "<br>";
document.body.innerHTML += "3. " + typeof (1 / void 0) + "<br>";

// при работе с типами данных
document.body.innerHTML += "4. " + typeof (1 / String) + "<br>";
document.body.innerHTML += "5. " + typeof (1 * Number) + "<br>";
document.body.innerHTML += "6. " + typeof (1 - Array) + "<br>";
document.body.innerHTML += "7. " + typeof (1 + Object) + "<br>";

// при работе с прототипами
document.body.innerHTML += "8. " + typeof (1 * new function(){}) + "<br>";
document.body.innerHTML += "9. " + typeof (1 / function(){}) + "<br>";

// при работе с объектами
document.body.innerHTML += "10. " + typeof (1 / []) + "<br>";
document.body.innerHTML += "11. " + typeof (1 * []) + "<br>";
document.body.innerHTML += "12. " + typeof (1 / {}) + "<br>";
document.body.innerHTML += "13. " + typeof (1 * {}) + "<br>";


1. number
2. number
3. number
4. number
5. number
6. number
7. string
8. number
9. number
10. number
11. number
12. number
13. number
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Оценить Комментировать
Решение пользователя sanex3339 К ответам на вопрос (6)
@sanex3339
При арифметических операциях с массивом используется его 1-й элт, в данном случае его нет, по этому берется 0.
1 / 0 - бесконечность.
typeof Infinity - number.

ИМХО, такой вопрос на собеседовании - идиотский,.
Ответ написан