Javascript '$fileReqInvisibleField';已在上层作用域中声明
对于波纹管功能,我在3个不同的地方得到以下警告: 上部作用域中已声明“$fileReqInvisibleField”。 解释Javascript '$fileReqInvisibleField';已在上层作用域中声明,javascript,sonarqube,sonarlint,Javascript,Sonarqube,Sonarlint,对于波纹管功能,我在3个不同的地方得到以下警告: 上部作用域中已声明“$fileReqInvisibleField”。 解释 $fileReqInvisibleField在第49行声明: const $fileReqInvisibleField = $(`#${fileReqId}`) 稍后在第101行,它作为参数传递给外部函数addValidator,如下所示: function addValidator ($fileReqInvisibleField) { $.validator
$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
,并且不需要将其作为参数添加。这个文件是一个大型项目的一部分,我不完全确定它在哪里使用。删除这些参数后,确保功能不被破坏的最佳方法是什么?