С зоной видимости в этом случае проблем нет, берутся аргументы функции, потому там на каждую лямбду своё окружение. Но вообще да, иногда на это стоит обращать внимание.
а в каких случаях стоит передавать аргументы параметрами в setTimeOut ? Просто в моем случае и без этого сработало. Может всегда передавать и не думать?))
Надо быть осторожным, например, если надо в обработчик setTimeout положить актуальное в моменте значение какой-нибудь глобальной переменной.
В JS это всё не очень очевидно устроено, я всё время в документацию залезаю, чтобы что-то такое уточнить. Если хочется разобраться в теме, можно поискать в интернете “javascript замыкания” и разницу между var, let и const.
В случае, как у вас, по идее можно так и продолжать делать