【发布时间】:2020-11-16 13:30:00
【问题描述】:
使用 eslint,您可以使用 /* global <name-of-var> */ 声明一个全局变量。例如
/* global document */
const elem = document.querySelector(selector);
是否可以声明一个全局但只在某个范围内?
function foo(selector) {
/* global document */
return document.querySelector(selector);
}
function bar(selector) {
return document.querySelector(selector); // error! document undefined
}
测试上面的示例fails,在foo 中将document 声明为全局,使其在bar 中可访问。
使全局访问范围限定的优点是,如果您删除一个函数,则无需清理任何其他内容。它声明了它自己的访问权限。就好像您将全局变量放在文件顶部并删除一个函数一样,您还必须清理文件顶部。基于本地信息越多越好的想法,它还可以更好地记录变量的来源。
注意:虽然我知道功能不同,但 python 的概念是让单个函数访问全局。这样做不会让所有函数都可以访问该全局变量,因此通常为每个函数声明全局变量的想法并不罕见。
有没有办法在eslint的特定范围内声明全局的存在?
【问题讨论】:
-
您可能希望使用
browser选项,而不是明确提及浏览器提供的全局变量。 -
谢谢,但不,我绝对不想使用浏览器选项。使用浏览器选项 eslint 无法找出未定义的变量,因为它必须假设它们存在于浏览器对象上。见this
标签: javascript eslint