JS中为什么没有函数重载(JS,编程语言)

时间:2024-05-08 03:36:30 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    JS%E4%B8%AD%E4%B8%BA%E4%BB%80%E4%B9%88%E6%B2%A1%E6%9C%89%E5%87%BD%E6%95%B0%E9%87%8D%E8%BD%BD

  函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表(参数个数、类型、顺序)的函数,这组函数被称为重载函数。重载函数通常用来声明一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。

  方法签名指的是函数的名称加形参列表,并且通过函数的名称或者形参列表都可以区分出是不同的函数。

  JS中通过形参是没有办法区分出不同的函数的,只能通过函数的名称区分出不同的函数。

  上述实际上是一个函数,后面的函数add会覆盖前面的函数,究其原因还是因为JS是弱类型的语言,a和b实际上都是用var声明的,等价于

  所以在JS中只能通过函数名称来辨别是不是同一个函数,形参是没有用的。

  但是在强类型的语言中就是可以的,例如在c语言中,定义函数时形参必须要指定类型,向里面传值的时候也必须传递指定类型的值。函数名相同,形参名不同的函数也会被认为是不同的函数。

  所以,在C语言这种强类型的语言中是可以实现函数重载的,JS这种弱类型的语言是不可以的。

  另一中理解的角度是可以将函数名想象为指针,函数名中存放的是函数体存放的地址。

  最终add实际上指向的是第二个函数,第一个函数被覆盖了,所以最终调用add时调用的也是第二个函数,并不能实现函数的重载。

本文:JS中为什么没有函数重载的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Python学习之三大名器-装饰器、迭代器、生成器下一篇:

1 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18