SyntaxError:JS中的意外EOF

时间:2014-10-12 13:17:36

标签: javascript

我有以下脚本:

function getMoods(nb) {
    var index;
    var a = ["Banana", "Coconut", "Peach", "Apple", ...];
    for (index=0; index<nb; ++index) {
        alert('a');
        if(index==1 || index==5 || index==9 || index==13) { moods += '<div class="col-xs-4">'; }
            moods += '
                <div class="checkbox">
                    <label for="'+a[index]+'">
                        <input type="checkbox" id="'+a[index]+'" class="moods"> '+a[index]+'
                    </label>
                </div>';
        if(index==4 || index==8 || index==12) { moods += '</div> '; }
    }
    $("#moods-area").html(moods);
}

我不明白为什么会出现以下错误:

SyntaxError: Unexpected EOF

你能帮我吗?

1 个答案:

答案 0 :(得分:3)

有两个问题:

  1. 错误使用spread operator ...

    ["Banana", "Coconut", "Peach", "Apple", ...];
    

    抛出SyntaxError: expected expression, got ']',因为在扩展运算符之后没有任何可迭代对象。

  2. JavaScript不支持多行字符串。

    您可以使用其他选择:

    • 连接多个字符串

      moods += 
        '<div class="checkbox">'
          +'<label for="'+a[index]+'">'
            +'<input type="checkbox" id="'+a[index]+'" class="moods"> '+a[index]
          +'</label>'
        +'</div>';
      
    • 在每行末尾使用\继续下一行的字符串

      moods += '\
        <div class="checkbox">\
          <label for="'+a[index]+'">\
            <input type="checkbox" id="'+a[index]+'" class="moods"> '+a[index]+'\
          </label>\
        </div>';
      
    • 加入一个字符串数组:

      moods += [
        '<div class="checkbox">',
          '<label for="'+a[index]+'">',
            '<input type="checkbox" id="'+a[index]+'" class="moods"> '+a[index],
          '</label>',
        '</div>'].join('');