【问题标题】:BackBoneJS: Why Internet Explorer does not accept the default parameter given to a function?BackBoneJS:为什么 Internet Explorer 不接受给函数的默认参数?
【发布时间】:2017-10-30 07:39:54
【问题描述】:

我在我的应用程序中使用 BackboneJS。下面的代码适用于谷歌浏览器,但在 IE(版本 10)中它在函数参数中给出语法错误:

Syntax Error: Expected ')'

下面是我的代码:

initialize: function (options='default value') {
    console.log(options) 
},

我已经通过在函数中使用 if-else 条件作为默认参数来处理它,但我无法理解为什么它在 chrome 中工作但在 IE 10 中不工作的原因?

【问题讨论】:

  • “虽然此语法适用于 Ecmascript 5” - 但不是。是ES6,IE 10不支持
  • 感谢指出,但在某种程度上支持 ES6。接受的答案详细描述了支持和不支持的内容。
  • IE 10 于 2012 年 9 月 4 日发布。ES6 = ES2015。不支持。接受的答案是不使用 ES6。检查 ES6 支持并编写 2 个代码变体是不切实际的。如果你想编写 ES6 代码并支持旧版浏览器,你应该使用像 babel 这样的编译器。
  • @TJ 代码不是 ES6 的。为了支持浏览器,我使用旧样式编写了 sn-p,但我已经包含了供 OP 研究的有关 ES6 的链接。

标签: javascript internet-explorer backbone.js


【解决方案1】:

它在 IE 中不是这样工作的。参考this,检查ES6兼容性检查this

因此,鉴于上述结果,您可以检查旧代码,然后为不受支持的浏览器编写如下内容:

var MyPerson = Backbone.Model.extend({
  defaults : {
    fname : "John",
    lname : "Smith",
    totalSales : "0"
  },
  initialize: function(options) {
    options = options || "default options";
    console.log('A model instance named: ' + this.get("fname") +  ' ' + this.get("lname") + ' was created.');
  }
});

但同样的逻辑也适用于视图。

【讨论】:

  • 作为TJ stated in the comments,不要为了使用 ES6 特性而编写代码的 2 个变体。仅使用 ES5,或使用 Babel 之类的工具将 ES6 编译为 ES5。
猜你喜欢
  • 1970-01-01
  • 2015-08-21
  • 2020-09-01
  • 2021-09-30
  • 2021-04-07
  • 1970-01-01
  • 2013-05-31
  • 2021-12-27
  • 1970-01-01
相关资源
最近更新 更多