【问题标题】:What should I use instead of spread operator for Chrome in Math.max(...arr)?我应该在 Math.max(...arr) 中使用什么来代替 Chrome 的扩展运算符?
【发布时间】:2016-01-05 08:46:49
【问题描述】:

我知道 Chrome 浏览器不支持扩展运算符。现在我有了这段代码:

var arr = [1, 2, 3];
var max = Math.max(...arr);
console.log('Max: '+ max);

上面的代码在 Chrome 中总是给我这个错误(但适用于 Mozilla 和 Safari):

Uncaught SyntaxError: Unexpected token ...

我在网上搜索了很多,但我找不到任何有用的答案。所以请帮助我找出我应该使用什么来代替 chrome 中的扩展运算符来执行代码中执行的相同任务。

提前感谢您的帮助。

【问题讨论】:

    标签: javascript google-chrome spread-syntax


    【解决方案1】:

    试试

    Math.max.apply(Math, arr);
    

    【讨论】:

      【解决方案2】:

      将数组作为Math.max() 函数的参数使用

      Math.max.apply(null, arr);
      

      var arr = [1, 2, 3];
      var max = Math.max.apply(null, arr);
      console.log('Max: '+ max);

      【讨论】:

      • Math 以外的任何内容作为第一个参数传递给apply 将使Math.max 在与正常情况不同的上下文中运行。并不是说它在我尝试过的浏览器中不起作用,但如果实现需要默认的 Math 上下文,它可能会失败。
      • Math.max 实现不使用对象实例变量 - 没有理由这样做。函数实现只会遍历参数并找到最大值。根据official documentation,它是Math的静态方法
      • 就像我说的那样,我不知道有任何实现会失败,只是这样的实现是可能的,尽管我想不出一个很好的理由来实现它方式。
      • 但是你知道它是一个静态方法。
      • 当然,但所有方法都有上下文,静态或实例。 console.log.apply(null, [1, 2, 3]) 在 Firefox 和 Chrome 控制台中会失败,但会在 Firebug 中工作。这一切都取决于实施。
      猜你喜欢
      • 2016-08-30
      • 2016-09-20
      • 2010-11-05
      • 2010-12-06
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多