当前位置: 首页 > news >正文

从两个角度理解为什么 JS 中没有函数重载

从两个角度理解为什么 JS 中没有函数重载


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

但是在 JS 如果不通过一些方法是无法实现重载的,可以从以下两个角度去理解。

1. 方法签名

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

JS 中通过形参是没有办法区分出不同的函数的,只能通过函数的名称区分出不同的函数,现在我们来看一下下面的例子.

function add(a, b) {
  return a + b;
}
function add(a, b) {
  return a + b + 1;
}

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


                

相关文章:

  • Promise.all和Promise.race区别,和使用场景
  • js 判断当前时间是否处于某个时间段内
  • 请描述一下 cookies,sessionStorage 和 localStorage 的区别
  • node -v没有作用
  • edited
  • 笔记本尺寸
  • 关于冒烟测试和回归测试的概念
  • 关于webstorm-----eslint一键自动修复所有错误
  • 微信授权,修改本地 host
  • 基于element封装一个公共的限制图片宽高的方法
  • elementUI编辑进入页面输入框输入内容没有作用问题
  • element上传图片校验尺寸
  • Vue Element采坑日记之图片上传后不及时更新视图
  • ellement非必填校验数字
  • ellement穿梭框,宽高调节
  • [LeetCode] Wiggle Sort
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • fetch 从初识到应用
  • gulp 教程
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 给新手的新浪微博 SDK 集成教程【一】
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 实战|智能家居行业移动应用性能分析
  • 树莓派 - 使用须知
  • 算法之不定期更新(一)(2018-04-12)
  • 写给高年级小学生看的《Bash 指南》
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • %check_box% in rails :coditions={:has_many , :through}
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Ruby)Ubuntu12.04安装Rails环境
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (九)One-Wire总线-DS18B20
  • (转)iOS字体
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .NET 分布式技术比较
  • .NET框架
  • .project文件
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [ linux ] linux 命令英文全称及解释
  • [2021 蓝帽杯] One Pointer PHP
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [C++]STL之map
  • [c语言]小课堂 day2
  • [Intel Edison开发板] 05、Edison开发基于MRAA实现IO控制,特别是UART通信
  • [Java][Android][Process] 暴力的服务能够解决一切,暴力的方式运行命令行语句
  • [jQuery]使用jQuery.Validate进行客户端验证(中级篇-上)——不使用微软验证控件的理由...
  • [JS7] 显示从0到99的100个数字
  • [Mvc]在ASP.NET MVC中使用Repeater
  • [office] excel中weekday函数的使用方法 #学习方法#微信#媒体
  • [Qt桌面开发]一个Qt简单界面的开发