有谁能告诉我我的语法有什么问题。我有一个数组javascript对象的声明:
$.fn.eCardify.frames = {
nonie: {
{flip_over_envelope, flip_over_envelope},
{open_envelope, open_envelope},
{show_card, show_card},
{open_card, open_card}
},
ie: {
{flip_over_envelope_ie, flip_over_envelope_ie},
{open_envelope_ie, open_envelope_ie},
{show_card_ie, show_card_ie},
{open_card_ie, open_card_ie}
}
}
我正试图以这种方式访问它:
function step(){
if($.fn.eCardify.settings.is_ie){
$.fn.eCardify.frames.ie[$.fn.eCardify.frame]();
}else{
$.fn.eCardify.frames.nonie[$.fn.eCardify.frame]();
}
$.fn.eCardify.frame++;
}
然而,chrome(可能还有其他浏览器)并不喜欢我的数组声明。它在数组声明的第二行给出了Uncaught SyntaxError: Unexpected token {
。
我做错了什么?
答案 0 :(得分:6)
{}
用于对象而不是数组
$.fn.eCardify.frames = {
nonie: [
[flip_over_envelope, flip_over_envelope],
[open_envelope, open_envelope],
[show_card, show_card],
[open_card, open_card]
],
ie: [
[flip_over_envelope_ie, flip_over_envelope_ie],
[open_envelope_ie, open_envelope_ie],
[show_card_ie, show_card_ie],
[open_card_ie, open_card_ie]
]
}
答案 1 :(得分:3)
数组使用[]
。
{}
用于对象(具有键/值对)
答案 2 :(得分:1)
你所拥有的不是数组,因为括号是卷曲的。如果要声明数组,请使用方括号:
$.fn.eCardify.frames = {
nonie: [
[flip_over_envelope, flip_over_envelope],
[open_envelope, open_envelope],
[show_card, show_card],
[open_card, open_card]
],
ie: [
[flip_over_envelope_ie, flip_over_envelope_ie],
[open_envelope_ie, open_envelope_ie],
[show_card_ie, show_card_ie],
[open_card_ie, open_card_ie]
]
}
虽然这种结构仍然很奇怪。你为什么需要这样的东西?
答案 3 :(得分:0)
对象的注释如下:{}
,而数组的注释为:[]
。
两者之间的区别之一是Objects期望一个键:值定义,而数组可以只是一组值。
示例强>
var arr = [val1, val2, val3];
var obj = {'key1': val1, 'key2': val2, 'key3': val3};