gpt4 book ai didi

javascript - 捕获 ESLint 中所有声明的变量

转载 作者:行者123 更新时间:2023-12-03 06:40:51 27 4
gpt4 key购买 nike

故事:

目前,我正在开发一个特定的 ESLint 规则 ( link ),以捕获存在变量的所有位置,隐藏内置 Protractor 全局变量变量,例如 browserelement

目前规则如下:

module.exports = function (context) {
var protractorGlobals = [
'browser',
'protractor',
'element',
'by',
'$',
'$$'
]

function checkVariables (node) {
var variables = context.getDeclaredVariables(node)
for (var i = 0; i < variables.length; ++i) {
if (protractorGlobals.indexOf(variables[i].name) !== -1) {
context.report(node, 'Unexpected Protractor built-in global variable shadowing')
}
}
}

return {
'VariableDeclaration': checkVariables,
'FunctionDeclaration': checkVariables,
'FunctionExpression': checkVariables,
'CatchClause': checkVariables
}
}

如您所见,我正在查找涵盖以下情况的所有变量和函数声明、函数表达式、catch 子句和 switch 语句:

var browser = "something";
function test (browser) {};
var browser;
function browser () {};
var browser = 1;
for (var browser = 0; by < 10; ++by) {}
try { json = JSON.parse(input) } catch (browser) {}

问题:

我是否涵盖了当前作用域中引入新变量的所有位置?是否有一种更通用的方法可以在代码中的任何位置获取声明的变量,而无需猜测和显式定义查找它们的位置?

最佳答案

如果您支持 ES6,那么您会缺少 import 声明。然而,有一个稍微简单的方法可以做到这一点。 ESLint 在底层使用名为 Escope 的包来跟踪变量声明和使用。您可以看一下no-redeclare有关如何访问它的规则,请参阅 Escope有关 API 信息的文档。 Escope 应该允许您检查当前作用域中的所有变量,并查看是否重新声明已经存在的变量。

关于javascript - 捕获 ESLint 中所有声明的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37969491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com