Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   "class" зарезервированное слово в Chrom'e (https://javascript.ru/forum/offtopic/22389-class-zarezervirovannoe-slovo-v-chrom%27e.html)

nyols 17.10.2011 20:17

"class" зарезервированное слово в Chrom'e
 
Сегодня чего то заметил что хром стал ругаться "SyntaxError: <unknown message reserved_word>" или "SyntaxError: Unexpected reserved word"

Никак не мог понять почему, и что это за слово незаконное я использую (а в лисе никаких ошибок), оказалось что слово "class" в хроме зарезервировано, а у меня были переменные с таким именем :)

Все так и появятся классы в Javascript ? :)

Андрей Параничев 17.10.2011 20:23

Не только class, таких слов много:
http://javascript.ru/ecma/part7#a-7.5.3

Но это не значит, что внезапно там появятся классы, хотя в некоторых спецефикациях (например в ActionScript) они есть, а в ECMA-262.3 они просто зарезервированы и их не рекомендуется использовать как имена методов/свойств.

nyols 17.10.2011 20:27

Да знаю что таких слов больше (спасибо за ссылку, буду знать какие именно :) ), но раньше с этим словом проблем не было и его можно было юзать, поэтому и удивился когда внезапно скрипт перестал работать (видимо после очередного обновления хрома) :) Да и в других браузерах вроде это слово можно использовать

Kolyaj 18.10.2011 11:21

Разные браузеры по разному относятся к разным зарезервированным на будущее словам. На какие-то ругаются, на какие-то не ругаются, на какие-то могут начать ругаться в новой версии. Так что лучше не использовать их.

vflash 18.10.2011 15:09

добавлю. зарезервированные слова можно использовать в качестве параметра к объекту. а в качестве переменных нет.
(function(){ "use strict"; return ({ class: 77 }).class })()

Kolyaj 18.10.2011 15:24

В качестве параметра к объекту можно использовать любую строку.
alert({'': 1}['']);

vflash 18.10.2011 15:31

Kolyaj,
а через точку слабо? :)

Kolyaj 18.10.2011 15:44

Зачем?

monolithed 18.10.2011 16:55

Зарезервированные ключевые слова в ES5:

class
debugger
enum
extends
super
const
export
import


Зарезервированные ключевые слова в ES5 при использовании строго режима:
implements
let
private
public yield
interface
package
protected
static


Также было вычерекнуто несколько зарезервированных названий для свойств объектов в.ч. class (если не ошибаюсь)


Часовой пояс GMT +3, время: 18:37.