javascript - 循环中声明的函数包含对变量的不安全引用
问题描述
好的,我在整个应用程序中重用此功能,并且 react es lint 发出警告,指出存在不安全的变量。
function scrollHorizontally(e,listOfBannedClasses, parentClass)
{
/*
e: event, listOfBannedClasses:array of classNames, parentClass: target className
*/
let target = e.target;
let returnEarly = false;
listOfBannedClasses.forEach(c=>{
if(target.classList.contains(c)){returnEarly=true;}
})
if(returnEarly){return} //if you are hovering over one of these divs default scroll behavior
e.stopPropagation();
e.nativeEvent.stopImmediatePropagation();
while(target.parentNode!== undefined && target.className!==parentClass){
if(listOfBannedClasses.some(x=>target.parentNode.classList.contains(x)))
{
return;
}
target = target.parentNode; //'unsafe' reference
}
let deltaY = e.deltaY ;
target.scrollLeft -= (-deltaY|| e.wheelData || -e.detail);
}
我已经盯着代码看了一段时间了。而且我正在以一种不同的方式编写它,以使其中没有 target=target.parentNode 。
该代码有效,它需要一个滚动事件、一个类名数组和一个目标——并且只有在 DOM 遍历未命中任何禁止类并最终到达目标类时才会向左或向右滚动。结果是您可以向上/向下滚动列表,并在这些列表的容器上向左/向右滚动。
解决方案
推荐阅读
- java - 错误:找到了很久,而需要数组
- android - 由 ResourceNotFoundException 引起的类 NavigationView 膨胀错误
- delphi - 如何从对象存储库中删除表单
- javascript - Javascript中for ... of循环和执行上下文中的解构赋值
- apache-spark - 如何使用 Spark 对象获取 Hive 表的位置值?
- java - 我如何从列中获取价值?(爪哇)
- visual-studio-code - VS Code - 将这些推荐的设置粘贴到您的工作区设置中
- c++ - 如何使用 key2 更新 STL 映射 key1 并将值复制到 key2
- laravel - Laravel 两次加载所有页面
- python - 我如何在 python 中扎根(除平方根)?