while
ожидает выражение , тогда как target = target.offsetParent
является присваиванием .В то время как присваивание оценивает выражения, очень часто его использование является либо ошибкой, либо запахом кода.Например, как объясняет линтер:
if (user.jobTitle = "manager") {
Код выше почти наверняка опечатка.Если вы хотите присвоить переменную, лучше сделать это в отдельной строке, а не в выражении, чтобы сделать ваш код понятным для будущих читателей (включая вас).
В вашем коде вы могли быисправить это, присвоив target
в нижней части do
, а затем поставить target
в while
условие:
do {
if (target === scrollContainer) break;
targetY += target.offsetTop;
target = target.offsetParent
} while (target);