返回对象文字的Javascript语法问题

时间:2014-05-08 10:57:08

标签: javascript backbone.js

var Tweet = Backbone.Model.extend({
  defaults: function()
  {
       return
       {
         author: ''
         status: ''
       }
  }
});
  

根据语法应该是

 author: '',
 status: ''

但这会在代码工作但没有产生输出的情况下提供错误

1 个答案:

答案 0 :(得分:3)

你陷入了一个名为automatic semicolon insertion的陷阱。具体来说,必须return{之间的换行符

var Tweet = Backbone.Model.extend({
    defaults: function() {
        return { // !!!
            author: '',
            status: ''
        }; // as a convention, I add ; always here, though not strictly needed.
    }
});

否则Javascript认为这是2个语句:

return;

只返回值undefined

{
   author: '';
   status: '';
}

这是一个块复合语句,其中有2 labelsauthor:status:,每个后跟一个无操作的字符串文字表达式语句''。在,行之后添加author: ''会导致语法错误,因为语句不能以逗号结尾/逗号后面不能有标签。