Нужно ли (пере?) Использовать здесь "var"? - PullRequest
0 голосов
/ 12 декабря 2018

Я запускаю SonarQube против старого приложения.Это помечает что-то в JavaScript (не в TypeScript или какой-нибудь модной современной вещи, просто в простом старом JavaScript), что, на мой взгляд, ложно, но я не уверен на сто процентов.Это выглядит как этот минимальный пример:

var foo=null;
var bar=["a","b","c","foobar"]
for(var i=0; i<bar.length; i++) {
    if(bar[i] == "foobar") {
        foo = i;
    }
}

И он помечается на строке foo = i;говоря, что мы должны использовать «var» для объявления foo, но вы можете видеть, что foo был объявлен ранее.Это какая-то странная область видимости JavaScript, мне нужно снова использовать var?Или я могу просто пометить это как ложное срабатывание и двигаться дальше?

(Реальное приложение работает, как и ожидалось, но нас просят прочитать и [каким-то образом] рассмотреть любые выводы SonarQube.)

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

var isFoobar=false;
var bar=["foo","foobar"];
for(var i=0; i<bar.length; i++) {
    if(bar[i] == "foobar") {
        isFoobar = true;
    }
    // if baz, set isBaz variable
    // if buzz, set isBuzz variable
    // etc. etc. for many more
}
// do something with isFoobar, isBaz, isBuzz, etc., down here

Как бы безумно это не выглядело, таких вещей, как «indexOf», просто не было вокругкогда это было написано (изначально поддерживало IE 8 или более раннюю версию и с тех пор никогда не обновлялось, просто продолжало работать в IE в "устаревшем режиме").

1 Ответ

0 голосов
/ 12 декабря 2018

Это ложный положительный результат - вы можете очистить вещи с помощью:

var foo = ["a","b","c","foobar"].lastIndexOf("foobar");
foo = foo < 0 ? null : foo;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...