Javascript 什么(浏览器插件?)将p定义为字符串www311

Javascript 什么(浏览器插件?)将p定义为字符串www311,javascript,Javascript,我有声明函数p()的代码,在一些用户身上它似乎随机失败。调试表明p已声明为字符串“www311”。代码中的任何内容都不包含这样的字符串,因此它必须来自浏览器 我怀疑是一个浏览器插件,但不知道是什么。以下用户代理已收集到上述错误: Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如Gecko) Mozilla/5.0(Windows NT 6.0)AppleWebKit/537.36(KHTML,如Gecko)Chrome/33.

我有声明函数p()的代码,在一些用户身上它似乎随机失败。调试表明p已声明为字符串“www311”。代码中的任何内容都不包含这样的字符串,因此它必须来自浏览器

我怀疑是一个浏览器插件,但不知道是什么。以下用户代理已收集到上述错误:

Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如Gecko)

Mozilla/5.0(Windows NT 6.0)AppleWebKit/537.36(KHTML,如Gecko)Chrome/33.0.1750.117


Mozilla/5.0(Windows NT 6.1;WOW64;rv:27.0)Gecko/20100101 Firefox/27.0

我认为真正的问题在于代码中有这些全局变量:)

使用一个函数来封装代码

把这个翻过来:

 //your code
 function p(){
 }
 // this is in the global namespace.
为此:

 (function(){ // functions get their own scope
     //your code
     function p(){ // p is no longer global
     }
 })(); // note that the function is immediately invoked here so you get the same result.
或者,您可以使用类似的模块加载器来解决全局问题。因为你也把模块放在函数中,所以你不必担心全局函数

下面是“调试显示p已经声明为字符串“www311”。“这无关紧要。只要您的声明是在前面的定义之后处理的,您就会赢。因此,在您的声明被处理之后,一定会发生一些事情,这似乎令人惊讶。?