Tom*_*Tom 1 javascript validation ajax
任何人都可以解释为什么:
function doAjax() {
var xmlHttpReq = false;
try { // Firefox, Opera 8.0+ and Safari
xmlHttpReq = new XMLHttpRequest();
}
catch (e) { // Internet Explorer
try {
xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert("Your browser does not support AJAX. Please use an AJAX compatible browser.");
return false;
}
}
}
xmlHttpReq.open('GET', 'handler.php', true);
xmlHttpReq.onreadystatechange = function() {
if (xmlHttpReq.readyState == 4) {
var response = xmlHttpReq.responseText;
handleAjaxResponse(response);
}
};
xmlHttpReq.send(null);
return true;
}
Run Code Online (Sandbox Code Playgroud)
导致以下验证错误:
Error:
Implied global: ActiveXObject 8, XMLHttpRequest 4, alert 15, handleAjaxResponse 24
Problem at line 10 character 16: 'e' is already defined.
catch (e) {
Problem at line 14 character 20: 'e' is already defined.
catch (e) {
Run Code Online (Sandbox Code Playgroud)
由JSlint.com javascript验证器
未定义的变量和函数
JavaScript最大的问题是它依赖于全局变量,特别是隐含的全局变量.如果未显式声明变量(通常使用var语句),则JavaScript假定变量是全局变量.这可以掩盖拼写错误的名称和其他问题.
JSLint期望在使用或调用所有变量和函数之前声明它们.这允许它检测隐含的全局变量.这也是一种很好的做法,因为它使程序更容易阅读.
有时文件依赖于全局变量和其他地方定义的函数.您可以通过在文件中包含注释来标识这些注释,这些注释列出了程序所依赖的全局函数和对象,但未在程序或脚本文件中定义.
全局声明可能如下所示:
/*global getElementByAttribute, breakCycles, hanoi */
Run Code Online (Sandbox Code Playgroud)
全球宣言始于
/*global
.请注意,g之前没有空格.您可以拥有任意数量的/*global
评论.它们必须在使用它们指定的变量之前出现.
关于您的问题,以下部分最有可能帮助您解决错误:
可以为您预定义一些全局变量.选择"假设浏览器(浏览器)"选项(请参阅下面的"选项")以预定义Web浏览器提供的标准全局属性,例如窗口和文档以及警报.选择Assume Rhino(rhino)选项以预定义Rhino环境提供的全局属性.选择"假设Yahoo Widget(小部件)"选项以预定义Yahoo!提供的全局属性.小部件环境.
在第二个错误是因为给你再使用变量" e
"为每个异常,包括嵌套的.重命名每个异常的变量以避免这种情况.
归档时间: |
|
查看次数: |
6457 次 |
最近记录: |