这种错误已经我已经多次犯了,一次用Ext做abcc的demo,一次是abcc查询模块。
js报错分为两种:语法错误和运行错误
1、js引擎在代码载入时进行语法分析,如果js写的不规范则语法分析通不过。这时候的错误称为语法错误
2、语法分析通过了,js引擎会执行代码。执行期间发生的错误称为运行错误
不同引擎处理这2种错误的提示不太一样。如下:
- var p = {name:"Jack",age:33,};//注意33后有个逗号
- p.toString = function() {return "姓名:" +this.name + ",年龄:" + this.age};
- console.log(p);
- alert(p);//姓名:Jack,年龄33
firefox下测试,引擎会忽略33后的逗号,可以通过语法检查,在执行期也不会报错
IE6下测试,语法分析期就报错了,当然也不会进入执行期了。
不过在IE8下已经修复此问题,不会报错了。(公司没人装IE7,偶也无法测试)
在chrome下也没报错。
总结下:此错误很难发现,经常是不小心就加了个逗号,或者定义了一个很多属性的对象或数组后来又要删除其中的某些而不小心留下了多余的逗号。
- //不规范的写法
- var p = {name:"Jack",age:33,};
- var ary = ["one","two","three",];
- //规范的写法
- var p = {name:"Jack",age:33};
- var ary = ["one","two","three"];