Javascript '$fileReqInvisibleField';已在上层作用域中声明

Javascript '$fileReqInvisibleField';已在上层作用域中声明,javascript,sonarqube,sonarlint,Javascript,Sonarqube,Sonarlint,对于波纹管功能,我在3个不同的地方得到以下警告: 上部作用域中已声明“$fileReqInvisibleField”。 解释 $fileReqInvisibleField在第49行声明: const $fileReqInvisibleField = $(`#${fileReqId}`) 稍后在第101行,它作为参数传递给外部函数addValidator,如下所示: function addValidator ($fileReqInvisibleField) { $.validator

对于波纹管功能,我在3个不同的地方得到以下警告:

上部作用域中已声明“$fileReqInvisibleField”。

解释

$fileReqInvisibleField
在第49行声明:

const $fileReqInvisibleField = $(`#${fileReqId}`)
稍后在第101行,它作为参数传递给外部函数addValidator,如下所示:

function addValidator ($fileReqInvisibleField) {

    $.validator.register({
      selector: `#${$fileReqInvisibleField.attr('id')}`,
      validate: validate,
      show: show,
      clear: clear
    })

   ...

}
但它也传递给父函数addValidator中的3个内部函数:

function addValidator ($fileReqInvisibleField) {
    ...

    function validate ($fileReqInvisibleField) { ... }


    function show ($fileReqInvisibleField, message) { ... }


    function clear ($fileReqInvisibleField) { ... }

    ...
}
这在所有这3个内部功能上都产生了SONARINT警告,如下所示:

function addValidator ($fileReqInvisibleField) {

    $.validator.register({
      selector: `#${$fileReqInvisibleField.attr('id')}`,
      validate: validate,
      show: show,
      clear: clear
    })

   ...

}
$fileReqInvisibleField隐藏或可能隐藏在第101行外部作用域中声明的变量。

这是否意味着我只需要删除$fileReqInvisibleField作为这3个内部函数的参数

如果我这样做,那3个内部函数会从外部函数中取值吗


在不破坏功能的情况下消除Sonarint警告是正确的解决方案吗?

是的,看起来您的功能
验证
显示
清除
都在
添加验证程序
功能的范围内。这意味着他们已经可以访问
$fileReqInvisibleField
,并且不需要将其作为参数添加。这个文件是一个大型项目的一部分,我不完全确定它在哪里使用。删除这些参数后,确保功能不被破坏的最佳方法是什么?