На самом деле с кейвордами в идентификаторах в стрикт моде в последних версиях, они частично нарушили консистентность. В сущности изначально не было никакой нужды запрезать использовать ключевые слова в качестве идентификаторов - понять, как именно используется слово - оператор это сейчас или переменная можно почти всегда вывести из контекста ее использования.
Ещё с undefined есть особенность что его (идентификатор) внутри функции можно создать.