"class" зарезервированное слово в Chrom'e
Сегодня чего то заметил что хром стал ругаться "SyntaxError: <unknown message reserved_word>" или "SyntaxError: Unexpected reserved word"
Никак не мог понять почему, и что это за слово незаконное я использую (а в лисе никаких ошибок), оказалось что слово "class" в хроме зарезервировано, а у меня были переменные с таким именем :) Все так и появятся классы в Javascript ? :) |
Не только class, таких слов много:
http://javascript.ru/ecma/part7#a-7.5.3 Но это не значит, что внезапно там появятся классы, хотя в некоторых спецефикациях (например в ActionScript) они есть, а в ECMA-262.3 они просто зарезервированы и их не рекомендуется использовать как имена методов/свойств. |
Да знаю что таких слов больше (спасибо за ссылку, буду знать какие именно :) ), но раньше с этим словом проблем не было и его можно было юзать, поэтому и удивился когда внезапно скрипт перестал работать (видимо после очередного обновления хрома) :) Да и в других браузерах вроде это слово можно использовать
|
Разные браузеры по разному относятся к разным зарезервированным на будущее словам. На какие-то ругаются, на какие-то не ругаются, на какие-то могут начать ругаться в новой версии. Так что лучше не использовать их.
|
добавлю. зарезервированные слова можно использовать в качестве параметра к объекту. а в качестве переменных нет.
(function(){ "use strict"; return ({ class: 77 }).class })() |
В качестве параметра к объекту можно использовать любую строку.
alert({'': 1}['']); |
Kolyaj,
а через точку слабо? :) |
Зачем?
|
Зарезервированные ключевые слова в ES5:
class debugger enum extends super const export import Зарезервированные ключевые слова в ES5 при использовании строго режима: implements let private public yield interface package protected static Также было вычерекнуто несколько зарезервированных названий для свойств объектов в.ч. class (если не ошибаюсь) |
Часовой пояс GMT +3, время: 18:37. |