javascript 数组/对象最后逗号问题

学习 Javascript 的同学们都知道,在数组字面量中每一个元素后都会根由一个小小的“,”逗号。但是就是这一个小小的逗号,让很多人在各种浏览器兼容的问题上头疼不已。
其实,这里的主要原因,就是数值或者属性/值对最后一个元素后面的逗号问题。而这个逗号主要表现的问题,就是 IE8 及以下浏览器和标准浏览器之间的解析差别。那么我们来看举一个栗子。

例如

var a = [1,2,3,], b = [,,];

像这样的数组生命形式,在标准浏览器中,例如 Chrome 或者火狐,就会将最后一个逗号省略掉,那么当使用

alert(a.length); 或者 alert(b.length);

的时候,就会得到 3 和 2 的结果。因为标准浏览器会忽略最后一个逗号,那么就变为:

a = [1,2,3], b = ["",""];

而在 IE8 及以下浏览器中,其却不忽略最后一个逗号,所以其就会变为:

a = [1,2,3,""], b = ["","",""];

也就是如果用数组的 length 属性 alert 的话,就会得到 4 和 3。

那么对于对象也是一样的。例如:

c = {
    x:5,
    y:6,
    z:9,
}

如果在标准浏览器中,最后一个逗号,也就是数字 9 后面的逗号会被忽略,javascript 代码就会正常运行。

而在 IE8 及以下浏览器中,则由于最后一个逗号的存在,浏览器就会报错,此时 javascript 代码则会停止运行。

所以,在写代码的时候,一定要确保数组或者属性/值对最后一个元素后面没有这个逗号。

当然了,对于有没有逗号,标准是规定的是“应该省略最后一个逗号”,所以这里确切的说是非标准浏览器的问题,而不是 Chrome 或者 火狐,这些标准浏览器的问题了。

评论

  1. 10年前
    2012-1-31 15:43:04

    😯 JS写的少。。。还木有注意过这问题。。。

  2. 一米 博主
    10年前
    2012-2-01 8:07:48

    @自由人
    嘿嘿,这是大问题。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇