Почему я не могу назвать функцию JavaScript "все"?

all не является встроенной функцией или ключевым словом, но почему я не могу вызвать функцию, если она называется all?

В консоли отладки нет сообщения об ошибке, и эта функция работает, если я переименую ее в all2.

Вот код: проверено в chrome и IE10

<!DOCTYPE html>
    <head>
    </head>
    <body>
    <script>
        function all()
        {
            alert(1);
        }
        function all2()
        {
            alert(2);
        }
    </script>
    <input type="button" value="all1" onclick="all()">
    <input type="button" value="all2" onclick="all2()">
    </body>
</html>

Ответ 1

Это должно было работать в хроме. Однако all был методом в IE до IE11.

[все больше не поддерживается. Начиная с Internet Explorer 11, используйте getElementById. Информацию см. В разделе Изменения совместимости.] Возвращает ссылку на коллекцию элементов, содержащихся в объекте. через http://msdn.microsoft.com/en-us/library/ie/ms537434(v=vs.85).aspx

Я помню, как давно это использовал, ранние javascript-дни вроде этого..

for(i = 0; i < document.all.length; i++){
   document.all(i)   ...
}

В настоящее время он устарел в IE и не реализован в большинстве других браузеров, хотя он все равно может считаться зарезервированным именем из-за того, насколько может быть расширенный старый код.

Обновление: я смог отследить еще один вопрос SO, они ответили ему красиво.

document.all доступен только в Internet Explorer, webkit и Opera.

В каждом другом браузере все это свойство undefined объекта документа (и undefined считается ложным значением)

Как историческое примечание: много (действительно много) лет назад document.all использовался чтобы сообщить обозревателю Internet Explorer из Netscape Navigator, поэтому, если вы встретите script, проверяющий if (document.all)... Я настоятельно рекомендую найти лучший script:)

- Фабрицио Кальдеран