为何使用4个random()方法呢,前3个都没有实现是否没有意义呢?

我看到下面的一个工具类有如下4个方法:

它使用了4个random()方法在这里:

export namespace GeoUtil {
  export function random(): number
  export function random(max: number): number
  export function random(min: number, max: number): number
  export function random(min?: number, max?: number): number {
    let mmin
    let mmax

    if (max == null) {
      mmax = min == null ? 1 : min
      mmin = 0
    } else {
      mmax = max
      mmin = min == null ? 0 : min
    }

    if (mmax < mmin) {
      const temp = mmin
      mmin = mmax
      mmax = temp
    }

    return Math.floor(Math.random() * (mmax - mmin + 1) + mmin)
  }
}

请问下,
1.为何使用4个random()方法呢,前3个都没有实现是否没有意义呢?
2.这里的export namespace GeoUtil 和 使用 export GeoUtil 有什么区别呢?
如果不用namespace可以用什么方式替代呢?

阅读 1.4k
3 个回答

这是函数重载的写法,表示这个函数支持多种的传参方式,比如:

  1. 可以不传参数;
  2. 只传一个参数,这一个参数表示max;
  3. 可以传两个参数;

使用上:

random();
random(5);
random(2, 5)

传一个参数时:
企业微信截图_a4919de5-624f-4fac-92f2-d184cc199cc6.png

传两个参数时:
image.png

不同的传参方式,也会进行不同的提示。后面括号里的 +2overloads表示还有两个重载函数。

推荐问题
logo
Microsoft
子站问答
访问
宣传栏