javascript - 在 Javascript 中,为什么空数组的最小值是无穷大?

标签 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 } ???

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

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

最佳答案

这是因为 (...[]) 指定的参数列表是空参数列表——也就是说,您正在执行 Math.min() 没有参数。

EMCAScript spec for Math.min states :

If no arguments are given, the result is +∞.

(不出所料,它有 a similar statement for Math.max 。)

关于javascript - 在 Javascript 中,为什么空数组的最小值是无穷大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43053848/

相关文章:

javascript - webpack可以将js转成es6吗?

javascript - NodeJS 中的双下划线与单下划线

c++ - 如何在C++中声明数组字符串

javascript - 替换原型(prototype) : class static getters, 或类字段中的值?

typescript - 为什么 ES2015 类不能在 TypeScript 中可靠地转译?

java - 如何构造一个包含多种数据类型值的字节数组?

javascript - 如何在javascript中添加属性来更改背景图像?

javascript - 如何替换字符串中的所有汉字?

javascript - Angularjs - 如何从服务器 json 答案设置模板内容?

c - 该函数不返回任何值