Подтвердить что ты не робот

Почему JSLint предпочитает точечную запись над квадратной скобкой?

Я нащупал часть своего кода и получил некоторые ошибки, говоря, что лучше использовать точечную нотацию. Я узнал, что я использовал квадратную скобку (с ясностью из этого замечательного поста), однако я хотел спросить, почему именно Crockford предпочитает точечную нотацию? Проект, над которым я работаю, использовал SBN для его энтузиазма, и я не думаю, что это запутывает или не читается, но если есть определенные причины для пользователя, я исправлю его.

Просто хочу понять это полностью, прежде чем продолжить!

4b9b3361

Ответ 1

Как я лучше всего понимаю Crockford, я думаю, что это сводится к последовательности и избегает использования зарезервированных слов. На своем сайте он заявляет:

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

Поскольку вы можете ссылаться на зарезервированные слова в нотации индекса, это может вызвать путаницу. В принципе, избегайте использования зарезервированных слов в качестве имен ваших членов объекта. Точечная нотация обеспечивает это (через язык - ошибка, как это делает Крокфорд), и поэтому было бы лучше использовать кодирование, чтобы избежать использования зарезервированных слов.

Также на том же сайте он также утверждает, что точечное обозначение "немного более удобно".

Ответ 2

Из "JavaScript: Хорошие детали" он говорит на странице 21:

. нотация предпочтительнее, потому что она более компактна и лучше читается.

Книга написана самим Дугласом Крокфордом.

Ответ 3

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

Источник

Важно помнить, что стандарты JSLint основаны исключительно на мнении. Большинство из них, как правило, популярны, но некоторые из них являются спорными. При этом я предпочитаю JSHint, что позволяет отключать все параметры, с которыми вы не согласны.

Ответ 4

Я считаю, что нужно различать элементы массива от свойств объекта и иметь менее запутывающий код.

Для ex:

var x = [];
x.push(stuff);

здесь x[0] заключается в доступе к нему.

var y = { foo: "bar" };

y['foo'], а также y.foo, но чтобы было ясно, что foo является свойством объекта y и не элементом в массиве y, мы можем использовать точечную нотацию для объектов.