在Javascript中,为什么空扩散阵列Infinity的最小值?

Kri*_*ari 4 javascript arrays ecmascript-6

我正在使用生成器来创建对象,如下所示:

function* Thing() {
  var x = 0;
  while (x < 3) {
    var rules = [{arr: [1, 2, 3]}, {arr: [1]}, {arr: []}];
    yield {
      arrayMinimum: Math.min(...rules[x].arr)
    }
    x++
  }
}

var create = Thing();

console.log(create.next().value)
console.log(create.next().value)
console.log(create.next().value) // { arrayMinimum: Infinity } ???
Run Code Online (Sandbox Code Playgroud)

为什么Math.min(...[]) === Infinity

奖金混乱:Math.max(...[]) === -Infinity???

aps*_*ers 11

这是因为指定的arguments-list (...[])是参数的空列表 - 也就是说,你Math.min()没有参数.

各州EMCAScript规范Math.min:

如果没有给出参数,则结果为+∞.

(并且,毫不奇怪,它有类似的声明Math.max.)