Javascript 全局变量原点
我有一个有趣的问题。Javascript 全局变量原点,javascript,Javascript,我有一个有趣的问题。 我在我的项目中检测到全局变量height。 Project有数百个文件,因此height变量出现数千次。 显然,我忘记了某个地方的var运算符。 如何跟踪此全局变量来源? UPD: 正如我已经说过的,变量发生了数千次。 我真的不知道它会是什么样子: // forgotten var: height = 'something'; // or forgotten comma var a = 1, b = 2 height = 3; 所以我绝对不能手动搜索它
我在我的项目中检测到全局变量
height
。Project有数百个文件,因此
height
变量出现数千次。显然,我忘记了某个地方的
var
运算符。如何跟踪此全局变量来源?
UPD:
正如我已经说过的,变量发生了数千次。
我真的不知道它会是什么样子:
// forgotten var:
height = 'something';
// or forgotten comma
var a = 1,
b = 2
height = 3;
所以我绝对不能手动搜索它。有什么建议吗?等号是意外创建全局变量的唯一可能方法。唯一的其他方法是将其指定为全局对象的属性,这不可能是偶然的。因此,您可以使用以下方法在文件中搜索分配给
高度的作业:
grep -e '(^|\s)height\s*=' -R *
通过这些赋值,您可以确定在何处创建height
,以及需要在其中声明的范围
顺便说一句,在中“使用strict”代码>模式下,JavaScript会抛出一个错误,而不是创建一个隐式全局,这可能更可取。您可以在chrome中使用开发人员工具进行调查。@evolutionxbox,我想知道,到底是怎么回事?可能重复grep-e'height\s*='
?亲爱的@Paulpro,谢谢您的建议。您的regexp找到了数百个匹配项,包括一些其他\u高度
变量。这不是很有帮助。