Жизнеспособные имена переменных JavaScript - PullRequest
2 голосов
/ 12 сентября 2011

Это вопрос, состоящий из двух частей: Общий и Конкретный.

Для общего вопроса: Я часто задаюсь вопросом, что представляет собой жизнеспособное имя переменной в JavaScript?Я знаю, что есть определенные «слова», которые не могут быть использованы в качестве переменных в JavaScript;Но мне еще не приходилось сталкиваться со списком нежизнеспособных имен переменных или правилом, которое нужно применять при создании имени переменной.Я обычно ошибаюсь из-за осторожности и использую непонятные имена, если не уверен.

Было бы неплохо с уверенностью узнать, что можно использовать в качестве переменной JavaScript, а что нельзя.

Любой совет?

Для конкретного: Мне интересно, могу ли я использовать href в качестве имени переменной в моем JavaScript?Это жизнеспособно, или это зарезервировано?


Задумка: Возможно, я смогу расширить этот вопрос, чтобы охватить также имена функций JavaScript.Какие имена являются жизнеспособными, а какие зарезервированы?Если два вопроса связаны, я отредактирую, чтобы задать оба.

Примечание: Я не спрашиваю, какие символы можно использовать в переменной JavaScript;На этот вопрос уже ответили здесь .

Ответы [ 4 ]

2 голосов
/ 12 сентября 2011

Хм, на самом деле, вы можете использовать любое имя в качестве имени переменной.

Вместо того, чтобы ссылаться на переменную по имени, обращайтесь к ней по индексу массива, , поскольку все свойства объекта в JSможно получить по индексу *, а также по тому факту, что глобальные переменные являются просто свойствами объекта window.

* строковый индекс может содержать буквально любую последовательность символов

Таким образом, вопрос, в свою очередь, может быть больше в строках "использовать ли зарезервированные слова в качестве имен переменных?"Здравый смысл сказал бы, что вы не должны, за исключением случаев, когда такое имя действительно связано с конструкцией, и вы не можете найти подходящую замену.

window['function'] = 2;
window['if'] = 4;
window['var'] = 8;
alert(window['function'] + window['if'] + window['var']);

Внимание!

Зарезервированные слова отличаются от собственной функциональностью .Хотя во многих случаях вы можете использовать имена, используемые как зарезервированные ключевые слова, в качестве переменных, встроенные функции могут быть перезаписаны.Например, мистер Саррис, упомянутый выше Node (это нативная функция, а не зарезервированное ключевое слово), вы можете перезаписать ее, выполнив window['Node'] = myNewThing;.В некоторых случаях это использовалось для достижения функциональности «оболочки» или «исправления», но не гарантируется работа в кросс-браузерном режиме (например, объект консоли MSIE).

1 голос
/ 12 сентября 2011

правила для объявления переменных (на кодировщике)

href можно использовать

1 голос
/ 12 сентября 2011

Каждый язык программирования имеет список зарезервированных слов .

Эти зарезервированные слова состоят из частей, составляющих этот язык программирования.

Для JavaScript такие вещи, как for или function или if являются зарезервированными словами, поскольку они имеют особое значение в самом языке . Как правило, вы не можете повторно использовать слова как идентификаторы (имена), которые уже имеют значение в этом конкретном языке.

Официальная языковая спецификация является хорошим местом для поиска этого. Для JavaScript см. спецификацию ECMAScript , раздел 7.6.1 (раздел 7.6. Разъясняет другие правила, которые применяются к именованию идентификаторов).

На ваш вопрос, можно ли использовать href в JS, легко ответить, посмотрев туда.

1 голос
/ 12 сентября 2011

Вы можете найти списки зарезервированных слов в JavaScript.

href определенно подходит в качестве имени переменной, поскольку href является атрибутом тега a и никоим образом не конфликтует с именами JavaScript.

Если вы когда-либо сомневаетесь в том, что переменная уже используется или нет, вы всегда можете открыть инструменты разработчика (F12 в большинстве браузеров), перейти к консоли и ввести имя. В этом случае вы получите:

> href
x ReferenceError: href is not defined

Ничто не использует его, так что вы можете использовать его без проблем.

Только для ударов, если вы введете зарезервированное слово, оно будет выглядеть так:

> finally
x SyntaxError: Unexpected token finally

Или, если это было родное, но уже взятое слово, оно могло бы выглядеть так:

> Node
function Node() { [native code] }

(узел уже определен и его нативная функция)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...