2008-01-25
小心js中的逗号
关键字: javascript
修改了一些js代码之后,FF正常,IE却报错了:
Expected identified, string or number
根据我上次的经验,应该是有多余的逗号。
于是我在eclipse中用正则表达式 ,\s*} 进行搜索,未找到任何匹配的字符串。
这就奇怪了!
只好另外想辙了,在我的project目录下搜索到今天修改的js文件列表,一共5个,我用肉眼逐一扫描这些js,最后发现问题出在这里:
实际上这和上次的问题是同样类型的,有多余逗号,让IE噎住了,只是我写正则表达式的时候没考虑到这种/*****/的情况,没能把它揪出来。
去掉这个多余的逗号,IE不报错了。
Expected identified, string or number
根据我上次的经验,应该是有多余的逗号。
于是我在eclipse中用正则表达式 ,\s*} 进行搜索,未找到任何匹配的字符串。
这就奇怪了!
只好另外想辙了,在我的project目录下搜索到今天修改的js文件列表,一共5个,我用肉眼逐一扫描这些js,最后发现问题出在这里:
Ext.MessageBox.show({
msg: 'Loading data from template...',
progressText: 'Loading...',
width:300,
wait:true,/*
waitConfig: {interval:500}*/
});
var delegate = doLoad.createDelegate(doLoad, [], true);
templateDataStore.on('load', delegate);
templateDataStore.load({params:[tplId, userinfo.id]});
实际上这和上次的问题是同样类型的,有多余逗号,让IE噎住了,只是我写正则表达式的时候没考虑到这种/*****/的情况,没能把它揪出来。
去掉这个多余的逗号,IE不报错了。
评论
sunjohn
2008-04-07
zhujinju 写道
stworthy 写道
写到前面比较难看了,用比较好的JS编辑器就能自动检查出来了,这个属于普通的语法问题。
我还没找到这种编辑器,能否给推荐一个
Spket IDE 1.6.10 有这个功能,并且其 JavaScript Formatter 可以设置自动除去多余的逗号
rappy
2008-04-07
这都良好帖!!!
这不是误导人要使劲犯错,然后花个一天半天时间用尽各种办法找到错误,
然后再陶醉于找到错误的满足感吗
这种错误完全是粗心导致
实在不敢恭维这帖的评价.
这不是误导人要使劲犯错,然后花个一天半天时间用尽各种办法找到错误,
然后再陶醉于找到错误的满足感吗
这种错误完全是粗心导致
实在不敢恭维这帖的评价.
bsdance
2008-04-07
Ext.MessageBox.show({
msg: 'Loading data from template...',
progressText: 'Loading...',
width:300,
wait:true,
/*waitConfig: {interval:500}*/
});
var delegate = doLoad.createDelegate(doLoad, [], true);
templateDataStore.on('load', delegate);
templateDataStore.load({params:[tplId, userinfo.id]});
clia
2008-03-05
可以养成这样的习惯:
如果要修改数组,修改之前先把最后一个元素加上逗号,修改完之后再把最后一个元素的逗号去掉。修改时就可以把所有元素一视同仁了。
只要养成了习惯,写出来的代码是最好的,写的过程也会比较爽。
如果要修改数组,修改之前先把最后一个元素加上逗号,修改完之后再把最后一个元素的逗号去掉。修改时就可以把所有元素一视同仁了。
只要养成了习惯,写出来的代码是最好的,写的过程也会比较爽。
dd-up
2008-02-29
sam.ds.chen 写道
修改了一些js代码之后,FF正常,IE却报错了:
Expected identified, string or number
根据我上次的经验,应该是有多余的逗号。
于是我在eclipse中用正则表达式 ,\s*} 进行搜索,未找到任何匹配的字符串。
这就奇怪了!
只好另外想辙了,在我的project目录下搜索到今天修改的js文件列表,一共5个,我用肉眼逐一扫描这些js,最后发现问题出在这里:
实际上这和上次的问题是同样类型的,有多余逗号,让IE噎住了,只是我写正则表达式的时候没考虑到这种/*****/的情况,没能把它揪出来。
去掉这个多余的逗号,IE不报错了。
Expected identified, string or number
根据我上次的经验,应该是有多余的逗号。
于是我在eclipse中用正则表达式 ,\s*} 进行搜索,未找到任何匹配的字符串。
这就奇怪了!
只好另外想辙了,在我的project目录下搜索到今天修改的js文件列表,一共5个,我用肉眼逐一扫描这些js,最后发现问题出在这里:
Ext.MessageBox.show({
msg: 'Loading data from template...',
progressText: 'Loading...',
width:300,
wait:true,/*
waitConfig: {interval:500}*/
});
var delegate = doLoad.createDelegate(doLoad, [], true);
templateDataStore.on('load', delegate);
templateDataStore.load({params:[tplId, userinfo.id]});
实际上这和上次的问题是同样类型的,有多余逗号,让IE噎住了,只是我写正则表达式的时候没考虑到这种/*****/的情况,没能把它揪出来。
去掉这个多余的逗号,IE不报错了。
怪楼主注释的地方不对.
dd-up
2008-02-29
finaland 写道
我一般这么处理:
在创建一个对象的时候,首先为他设置定义开始和定义结束 的标志位属性,然后在开始标志位和结束标志位之间创建对象的实际属性
比如:
Ext.MessageBox.show({
___BOODEF:"Begin of object define", // 标志位:对象定义开始
// 实际属性,开始
msg: 'Loading data from template...',
progressText: 'Loading...',
width:300,
wait:true,
// 实际属性,结束
/* 这是注释掉的属性
waitConfig: {interval:500},*/
___EOODEF:"End of object define" // 标志位:对象定义结束
});
这种做法的主要问题如下:
1、标志属性名不能和实际属性名重复,而对象的实际属性名无法预知
所以要使用那些实际属性不太可能使用的名字,比如上例中的
___BOODEF = begin of object define
___EOODEF = end of object define
或者短点的:
___B__O___:"begin of it"
___E__O___:"end of it"
或者你和我一样自恋的话,可以用自己的名字:
___FINALNAD_B__:"finaland's object def begin"
___FINALAND_E__:"finaland's object def end"
2、如果你使用 for(i in obj) 的方法循环遍历当前 obj 的所有属性,除了实际属性之外,你会得到多余的标志位属性
3、对象定义写起来比较麻烦,刚开始异常痛苦,后来我用女朋友的名字作为标志位名,就好多了
在创建一个对象的时候,首先为他设置定义开始和定义结束 的标志位属性,然后在开始标志位和结束标志位之间创建对象的实际属性
比如:
Ext.MessageBox.show({
___BOODEF:"Begin of object define", // 标志位:对象定义开始
// 实际属性,开始
msg: 'Loading data from template...',
progressText: 'Loading...',
width:300,
wait:true,
// 实际属性,结束
/* 这是注释掉的属性
waitConfig: {interval:500},*/
___EOODEF:"End of object define" // 标志位:对象定义结束
});
这种做法的主要问题如下:
1、标志属性名不能和实际属性名重复,而对象的实际属性名无法预知
所以要使用那些实际属性不太可能使用的名字,比如上例中的
___BOODEF = begin of object define
___EOODEF = end of object define
或者短点的:
___B__O___:"begin of it"
___E__O___:"end of it"
或者你和我一样自恋的话,可以用自己的名字:
___FINALNAD_B__:"finaland's object def begin"
___FINALAND_E__:"finaland's object def end"
2、如果你使用 for(i in obj) 的方法循环遍历当前 obj 的所有属性,除了实际属性之外,你会得到多余的标志位属性
3、对象定义写起来比较麻烦,刚开始异常痛苦,后来我用女朋友的名字作为标志位名,就好多了
天,又有一种写法了。
为什么不:
___FINALNAD_B__: null,
___FINALAND_E__: null
dd-up
2008-02-29
myy 写道
养成下面这样写的习惯:
Ext.MessageBox.show({
msg: 'Loading data from template...'
,progressText: 'Loading...'
,width:300
,wait:true
,waitConfig: {interval:500}
});
....
我禁不住要回贴:
Ext.MessageBox.show({
msg: 'Loading data from template...'
,progressText: 'Loading...'
,width:300
,wait:true
,waitConfig: {interval:500}
});
....
奇,第一次看见这样写的。
fyting
2008-02-20
hax 写道
对了,我还有一招。
比之把逗号写到前面,我更愿意加上一个特别的结尾,例如:
myObj = {
...,
...,
...,
...,
$:0
}
大家在这里可以发挥想象。例如写上当前时间:
01:43
也可以写个有趣的数字:
12:88
也可以画个脸型(横过来看)
face:-0
也可以写你的独特签名
PI:3.1415926535
……
比之把逗号写到前面,我更愿意加上一个特别的结尾,例如:
myObj = {
...,
...,
...,
...,
$:0
}
大家在这里可以发挥想象。例如写上当前时间:
01:43
也可以写个有趣的数字:
12:88
也可以画个脸型(横过来看)
face:-0
也可以写你的独特签名
PI:3.1415926535
……
myObj = {
name:"abc",
冏:"rz",
haha:-0
}
liudaoru
2008-02-20
实际上是对象直接量的问题。IE和FF对{a:a,}的处理不一样,IE当成错误,而FF做了容错性处理,最好的是最后不要有","
让你笑了
2008-02-20
我也局的myy的写法不错,现在也这么写...
注释一行的时候很方便
像这样的逗号错误...不管怎么谢..检测起来都不好找的...
注释一行的时候很方便
像这样的逗号错误...不管怎么谢..检测起来都不好找的...
finaland
2008-02-18
我一般这么处理:
在创建一个对象的时候,首先为他设置定义开始和定义结束 的标志位属性,然后在开始标志位和结束标志位之间创建对象的实际属性
比如:
Ext.MessageBox.show({
___BOODEF:"Begin of object define", // 标志位:对象定义开始
// 实际属性,开始
msg: 'Loading data from template...',
progressText: 'Loading...',
width:300,
wait:true,
// 实际属性,结束
/* 这是注释掉的属性
waitConfig: {interval:500},*/
___EOODEF:"End of object define" // 标志位:对象定义结束
});
这种做法的主要问题如下:
1、标志属性名不能和实际属性名重复,而对象的实际属性名无法预知
所以要使用那些实际属性不太可能使用的名字,比如上例中的
___BOODEF = begin of object define
___EOODEF = end of object define
或者短点的:
___B__O___:"begin of it"
___E__O___:"end of it"
或者你和我一样自恋的话,可以用自己的名字:
___FINALNAD_B__:"finaland's object def begin"
___FINALAND_E__:"finaland's object def end"
2、如果你使用 for(i in obj) 的方法循环遍历当前 obj 的所有属性,除了实际属性之外,你会得到多余的标志位属性
3、对象定义写起来比较麻烦,刚开始异常痛苦,后来我用女朋友的名字作为标志位名,就好多了
在创建一个对象的时候,首先为他设置定义开始和定义结束 的标志位属性,然后在开始标志位和结束标志位之间创建对象的实际属性
比如:
Ext.MessageBox.show({
___BOODEF:"Begin of object define", // 标志位:对象定义开始
// 实际属性,开始
msg: 'Loading data from template...',
progressText: 'Loading...',
width:300,
wait:true,
// 实际属性,结束
/* 这是注释掉的属性
waitConfig: {interval:500},*/
___EOODEF:"End of object define" // 标志位:对象定义结束
});
这种做法的主要问题如下:
1、标志属性名不能和实际属性名重复,而对象的实际属性名无法预知
所以要使用那些实际属性不太可能使用的名字,比如上例中的
___BOODEF = begin of object define
___EOODEF = end of object define
或者短点的:
___B__O___:"begin of it"
___E__O___:"end of it"
或者你和我一样自恋的话,可以用自己的名字:
___FINALNAD_B__:"finaland's object def begin"
___FINALAND_E__:"finaland's object def end"
2、如果你使用 for(i in obj) 的方法循环遍历当前 obj 的所有属性,除了实际属性之外,你会得到多余的标志位属性
3、对象定义写起来比较麻烦,刚开始异常痛苦,后来我用女朋友的名字作为标志位名,就好多了
kevin_liu
2008-02-04
我也碰到了这个问题,看起来是一个事故多发地~~
gavinju
2008-02-03
这样写程序的可读性不强。
---个人观点
---个人观点
zjumty
2008-02-02
beckrabbit 写道
初写JS都会遇到的问题,我只想说IE太恶心了,连多个逗号都不让过。
IE的恶心不是在于不放过逗号, 而是他只告诉你错了, 但不告诉你错在哪里!
cayenne
2008-02-02
个人感觉myy的写法比较好
afcn0
2008-02-02
ie数组多,是可以的,只不过length会错误变化而已
zhujinju
2008-02-02
[quote="ajaxgo"][quote="zhujinju我用的就是这个,没有提示出来对于的逗号.
语法要求的也不是非常严格.
aptana 本身就是 提示 要 火狐的 fireBug 一块 用的[/quote]
aptana怎么可能没有逗号提示,看看我的图片~~~
aptana用ff,只是可以能用ff来帮助aptana进行调试,我从来不这样去配合调试,都是单独在ff中调试[/quote]
aptana 对数组的 最后一个逗号检查不严格
比如 [1,2,3,] 在火狐里不出错,在IE 里不行
在aptana 中也不提示错误
语法要求的也不是非常严格.
aptana 本身就是 提示 要 火狐的 fireBug 一块 用的[/quote]
aptana怎么可能没有逗号提示,看看我的图片~~~
aptana用ff,只是可以能用ff来帮助aptana进行调试,我从来不这样去配合调试,都是单独在ff中调试[/quote]
aptana 对数组的 最后一个逗号检查不严格
比如 [1,2,3,] 在火狐里不出错,在IE 里不行
在aptana 中也不提示错误
jive
2008-02-01
aptana的确可以提示这种错误,那样找太麻烦啦。。。
ajaxgo
2008-01-31
[quote="zhujinju我用的就是这个,没有提示出来对于的逗号.
语法要求的也不是非常严格.
aptana 本身就是 提示 要 火狐的 fireBug 一块 用的[/quote]
aptana怎么可能没有逗号提示,看看我的图片~~~
aptana用ff,只是可以能用ff来帮助aptana进行调试,我从来不这样去配合调试,都是单独在ff中调试
语法要求的也不是非常严格.
aptana 本身就是 提示 要 火狐的 fireBug 一块 用的[/quote]
aptana怎么可能没有逗号提示,看看我的图片~~~
aptana用ff,只是可以能用ff来帮助aptana进行调试,我从来不这样去配合调试,都是单独在ff中调试
purpen
2008-01-30
早已发现了.
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 3422 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
MyDesktop.zh
共 17 张
共 17 张
最近加入圈子
最新评论
-
浅谈基于ExtJS的AJAX程序 ...
楼主能把其他的代码共享吗
-- by renhaimm -
浅谈基于ExtJS的AJAX程序 ...
引用 commond 2008-06-30 想问下楼主,如果没有server的 ...
-- by sam.ds.chen -
浅谈基于ExtJS的AJAX程序 ...
想问下楼主,如果没有server的支持,纯粹使用ext进行国际化,而又不整个刷新 ...
-- by commond -
浅谈基于ExtJS的AJAX程序 ...
EXT真是个好东西,可惜License问题是个问题。
-- by 笑 喘 -
小心js中的逗号
zhujinju 写道stworthy 写道写到前面比较难看了,用比较好的JS编 ...
-- by sunjohn






评论排行榜