Как мне обратиться к предупреждению JSLint «Не использовать« новый »для побочных эффектов»? - PullRequest
10 голосов
/ 10 сентября 2010

Почему я получаю эти ошибки?

Проблема в строке 329, символ 60: не используйте 'new' для побочных эффектов.

new widget.StyledDropdown(dojo.byId("sTitle"));

Проблема в строке 330, символ 61: не использовать 'new' для побочных эффектов.

new widget.StyledDropdown(dojo.byId("sSuffix"));

Проблема в строке 336, символ 57: Не используйте 'new' для побочных эффектов.

true,{shortenName : true,maxChars : 20});

Проблема в строке 338, символ 129: не использовать 'new' для побочных эффектов.

new widget.StyledDropdown(dojo.byId("sCountry"),USPS.Address.countrySw...

Ответы [ 2 ]

21 голосов
/ 10 сентября 2010

Вы не сохраняете ссылку на вновь созданные объекты, что является запахом кода.

JSLint говорит: «Вы создаете некоторые объекты, но сразу же их отбрасываете;делать то, что создание объектов имеет побочные эффекты, что странно. "

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

1 голос
/ 12 октября 2016

Переосмысление стратегии является наилучшим, но чаще всего обработка технического долга во время цикла разработки невозможна.

Если вы используете JSHint, вы можете переопределить эту опцию в каждом конкретном случае. Добавьте этот комментарий jshint в область действия оскорбительного кода.

/* jshint -W031 */
new widget.StyledDropdown(dojo.byId("sTitle"));
new widget.StyledDropdown(dojo.byId("sSuffix"));
...

Встроенные конфигурации имеют функциональную область. Поэтому все, что выходит за рамки комментария, все равно будет проверено.

...