2010-04-18 3 views
12

Когда я напечатал это, по-видимому невинный фрагмент кода:Что такое ключевое слово `name` в JavaScript?

values.name 

Gedit выделенный имя в качестве ключевого слова. Тем не менее, имя нет на странице по теме an answer to a question about reserved keywords. Я также сделал пару тривиальных тестов в SpiderMonkey, но имя, похоже, действовало как обычный идентификатор.

Поиск в Google тоже не сказал мне ничего. Тем не менее, я нашел a page listing name in "Other JavaScript Keywords".. Моя догадка заключается в том, что имя является функцией или членом какого-либо элемента DOM и не вторгается в пространство имен.

имя действительно ключевое слово в JavaScript? Если да, то что он делает?

+0

'name' является (был) использован как атрибут элемента' a', поэтому он может встречаться в коде DOM. Возможно, именно поэтому ваш редактор подчеркивает это. – Thomas

+0

Фактически gedit выделяет «имя» как свойство. Но в классических цветовых схемах свойства и ключевые слова используют одно и то же определение стиля. Поскольку возможности синтаксического анализа gedit довольно ограничены, хотя только этот небольшой набор важных имен свойств выделяется с помощью этого стиля, например, свойства regexp, такие как 'global',' source', 'lastIndex' и свойства функции, такие как' prototype', 'length 'и' name'. – Robert

+1

В chrome имя ведет себя странно, как глобальный объект от localhost. i.e Внутри функции var name = '...' изменяет исходное имя window.name и, следовательно, 'name; доступен вне области fn. Однако, когда я запускаю его отдельно в консоли, а Plunkr - это отображение неопределенного/или исходного окна Object. В IE его поведение нормальное (i.e undefined/empty в localhost) – Amitesh

ответ

16

Его не зарезервированное слово javascript, его атрибут html. Любой элемент DOM может иметь имя. Похоже, ваш редактор синтаксиса все равно выделит его.

3

(Я знаю, это было спрошено 2 года назад, но ...) Это случилось со мной, например, это ниже не сработало.

name = document.getElementById('nombre'); 
//something else 
name.className = 'thinking'; 

Вместо этого я изменил его на

username = document.getElementById('nombre'); 
//something else 
username.className = 'thinking'; 

и это работает! Да, все в порядке, но это то, что я нахожу, может быть, довольно интересным, также из-за атрибута 'name' тега 'a'. Что-то, на что нужно следить.

+0

Вопрос не в том, о проблемах с повторным использованием глобальной переменной 'name'. В отличие от использования простого 'name' в глобальной области применения, использование' values.name' * does * работает *, оно просто отображается ненормально в текстовом редакторе. – Robert

+2

'window.name' имеет сеттер, который строит значение перед его сохранением. Просто объявите его с помощью 'var' в неглобальной области. – Oriol

1

Это не зарезервированное слово, это переменная (это имя window.name). Я не уверен, что она определена.

+1

Указанный текстовый редактор не выделяет «имя». Это только подчеркивает его, когда оно используется как имя свойства, например, в 'window.name'. Затем выделяется только часть '.name'. – Robert

Смежные вопросы