我有声明函数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
最佳答案
我认为真正的问题是代码中包含这些全局变量:)
使用IIFE封装代码。
转这个:
//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.
另外,您可以使用RequireJS之类的模块加载程序,该模块加载程序将解决globals问题。由于您也将模块放在函数中,因此您不必担心全局变量。
这是an interesting read about it from Addy Osmani's "Learning JavaScript design patterns"
关于javascript - 什么(浏览器插件?)将p定义为字符串www311,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21967962/