Ответ 1
return
- зарезервированное ключевое слово, но зарезервированные ключевые слова могут использоваться как accessers без проблем, это просто плохая практика для этого.
Зарезервированные ключевые слова могут не использоваться в качестве имен для переменных, функций, методов или идентификаторов для массивов и объектов, поскольку ECMAScript определяет для них особое поведение:
Исходный текст из сценариев ECMAScript сканируется слева направо и преобразуется в последовательность элементов ввода, которые являются токенами, управляющими символами, терминаторами строк, комментариями или пробелами.
ECMAScript также определяет определенные ключевые слова и литералы и имеет правила автоматической вставки точек с запятой для завершения операторов.
Зарезервированные слова применяются только к идентификаторам (по сравнению с именами идентификаторов).
Как описано в ES5, это все Идентификационные имена, которые не исключают ReservedWords.
a.return
a["return"]
a = { return: "test" }.
Однако это не
function return() {}
var return;