Помимо "eval", в вашем примере кода есть некоторая ошибка, и я не собираюсь объяснять вам.
И теперь мы сосредоточимся на "eval" в вашем примере.Если вы сделаете это, вы обнаружите, что это не будет работать вообще.Вы можете сделать это только как eval(option + "Count++")
, а не присваивать значение aCount / bCount переменной (CONST!), А затем увеличивать эту переменную.Следующий код имеет логическую проблему:
let c = aCount;
c++; // aCount not changed
По моему мнению, вы можете использовать «eval» в некоторых особых ситуациях, если код, переданный в «eval», АБСОЛЮТНО доверен.В вашем примере кода это соответствует этому правилу.(Однако, помимо безопасности, у «eval» также есть проблема с производительностью.)
Конечно, у вас есть другие лучшие варианты, чтобы избежать использования «eval».Например, используйте if / else или switch / case:
addCount=(option)=>{
if (option === 'a') aCount++;
else if (option === 'b') bCount++;
}
Или вы можете использовать объект для хранения всех переменных:
let obj = {aCount: 0, bCount: 0};
addCount=(option)=>{
obj[option + "Count"]++;
}