如何列出多个JS文件*静态*使用的所有(全局)变量?

时间:2017-05-18 17:54:56

标签: javascript

众所周知,当我们使用var在文件级别声明变量时,可以通过同一HTML页面中加载的所有其他JS文件访问它。我现在正试图将它们转换为ES6。因此,我想消除所有这些变量共享。

有很多人建议在控制台中使用Object.keys( window );等代码来查找所有代码。但是,我的脚本中还有很多变量没有定义,我想静态地进行这种分析。

注意:这可以通过依靠linting工具来报告"未声明的标识符"来完成。例如,下面是用于将新成员添加到名为g的同一全局对象(变量)的文件。 js加载顺序是文件a,然后是文件b。如您所见,g是一个全局变量。但是,linting工具不能说明哪个全局变量由多个JS文件共享

归档

var g;
if(typeof g === 'undefined')
   g = {};
g.something = 1;

档案b

var g;
if(typeof g === 'undefined')
    g = {};
g.hey = 2;
console.log(g.something); // this works

注意:这不能通过遍历window对象来完成。首先,这不是静态完成的。其次,浏览器有很多预定义的对象没有被继承 - 我们无法知道它们是否被任何用户编写的JS文件使用。

0 个答案:

没有答案