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

标签 javascript backbone.js

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

according to the syntax it should be

 author: '',
 status: ''

但这提供了一个错误,而代码中的那个工作但没有产生输出

最佳答案

您掉进了一个名为 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: '';
}

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

关于返回对象文字的 Javascript 语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23539772/

相关文章:

html - 如何使用 Handlebars 遍历 JSON 结构

javascript - 等待循环结束,facebook API?

javascript - Vanilla JavaScript 代码在控制台中运行,但不能在 (greasemonkey) 脚本中运行

javascript - Javascript INFINITY 属性

authentication - 在 Backbone.js 中使用状态并登录用户

javascript - 无法将 html 插入 jQuery 对象

events - Backbone listenTo 不工作

javascript - Javascript "Math.sin"和 WebGL“sin”之间的区别

javascript - Angular Directive(指令)通信

javascript - AngularJS 错误? - 选择多个 - 根据选项数量动态设置大小