Javascript 您可以为eslint在本地声明一个全局变量吗?

Javascript 您可以为eslint在本地声明一个全局变量吗?,javascript,eslint,Javascript,Eslint,使用eslint,您可以使用/*global*/声明全局变量。比如说 /* global document */ const elem = document.querySelector(selector); 是否可以声明全局但仅在某个范围内 function foo(selector) { /* global document */ return document.querySelector(selector); } function bar(selector) { retur

使用eslint,您可以使用
/*global*/
声明全局变量。比如说

/* 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
}
通过在
foo
中将
document
声明为全局,可以在
bar
中访问上述示例

将全局访问范围限定的优点是,如果删除一个函数,则没有其他需要清理的内容。它声明了自己的访问权限。如果您将全局变量放在文件的顶部并删除一个函数,那么您还必须清理文件的顶部。基于本地信息越多越好的思想,它还可以更好地记录变量的来源

注意:虽然我知道该特性有所不同,但python的概念是允许单个函数访问全局函数。这样做并不能使所有函数都能访问该全局函数,因此一般来说,为每个函数声明全局函数的想法并不少见

有没有一种方法可以声明全局函数只存在于eslint的某个范围内?

并没有说只在函数中的局部执行。我明白你所描述的意思;你永远都不知道,他们可能会接受一个拉取请求,加上

为您提供了两种解决方法:

  • 将需要在其自己的模块中使用全局变量的函数组合在一起

  • 使用
    eslint disable line
    eslint disable next line
    和内联赋值,如下所示:

    函数foo(选择器){
    const doc=document;/*eslint禁用行号未定义*/
    返回单查询选择器(选择器);
    }
    
  • 没有说任何关于只在函数中局部执行的内容。我明白你所描述的意思;你永远都不知道,他们可能会接受一个拉取请求,加上

    为您提供了两种解决方法:

  • 将需要在其自己的模块中使用全局变量的函数组合在一起

  • 使用
    eslint disable line
    eslint disable next line
    和内联赋值,如下所示:

    函数foo(选择器){
    const doc=document;/*eslint禁用行号未定义*/
    返回单查询选择器(选择器);
    }
    

  • 您可能希望使用
    浏览器
    选项,而不是明确提及浏览器提供的全局选项。谢谢,但不,我绝对不想使用浏览器选项。使用浏览器选项,eslint无法找出未定义的变量,因为它必须假设它们存在于浏览器对象上。请参阅,您可能希望使用
    浏览器
    选项,而不是明确提及浏览器提供的全局选项。谢谢,但不,我绝对不想使用浏览器选项。使用浏览器选项,eslint无法找出未定义的变量,因为它必须假设它们存在于浏览器对象上。看见