2.js中对于函数参数不确定的解决--arguments

1.arguments对象

在函数代码中,使用特殊对象 arguments,无需明确指出参数名,就能访问它们。

例如,在函数 sayHello() 中,第一个参数是 message。用 arguments[0] 也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,第二个参数位于位置 1,依此类推)。

因此,无需明确命名参数,就可以重写函数:

function sayHi() {
  if (arguments[0] == "bye") {
    return;
  }

  alert(arguments[0]);
}

2.获得参数的个数

下面的代码将输出每次调用函数使用的参数个数:

function howManyArgs() {
  alert(arguments.length);
}

howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);

上面这段代码将依次显示 "2"、"0" 和 "1"。

注释:与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据 Netscape 的文档,最多可接受 25 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。

3.模拟函数重载

用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载:

function doAdd() {
  if(arguments.length == 1) {
    alert(arguments[0] + 5);
  } else if(arguments.length == 2) {
    alert(arguments[0] + arguments[1]);
  }
}

doAdd(10);	//输出 "15"
doAdd(40, 20);	//输出 "60"

当只有一个参数时,doAdd() 函数给参数加 5。如果有两个参数,则会把两个参数相加,返回它们的和。所以,doAdd(10) 输出的是 "15",而 doAdd(40, 20) 输出的是 "60"。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

经典JS闭包面试题

大部分人都会做错的经典JS闭包面试题 目录 由工作中演变而来的面试题 JS中有几种函数 创建函数的几种方式 三个fun函数的关系是什么? 函数作用域链的问题 到...

54850
来自专栏安恒信息

Jsprime——一款JavaScript静态安全分析工具

如今,越来越多开发人开始将JavaScript作为其首选语言方案。理由很简单,JavaScript如今正越来越多地被视为应用程序的主流开发语言——无论是在Web...

34470
来自专栏小樱的经验随笔

HTML/CSS/JavaScript学习笔记【持续更新】

HTML <font> 标签 定义和用法 <font> 规定文本的字体、字体尺寸、字体颜色。 实例 规定文本字体、大小和颜色: 1 <font size="3"...

391100
来自专栏逸鹏说道

基于HTML的PDF展示 pdf.js

很不错的一个插件,推荐给大家 pdf.js 是一个技术原型主要用于在 HTML5 平台上展示 PDF 文档,无需任何本地技术支持。 ? 在线演示:http://...

47480
来自专栏逸鹏说道

window.opener.location 安全风险讨论

在浏览器中,通过 <a> 标签或者 JavaScript 中的 window.open 函数,可以打开新页面。新页面的 window 对象中,存在一个 open...

37360
来自专栏逸鹏说道

评论JS插件~多说+畅言

多说API:http://dev.duoshuo.com/docs/512d6e2e418847315a000001 发表评论 接口名称 /posts/crea...

1.2K100
来自专栏c#开发者

JavaScript和ASP.NET的传值

JavaScript和ASP.NET的传值 因项目需要,最近一段时间里对于js的开发有了一定的了解。在基于ASP.NET的开发中,经常性的需要JS脚本来增加一些...

48760
来自专栏逸鹏说道

锚点跳转的过渡效果

CSS实现:http://stackoverflow.com/questions/17631417/css-pure-css-scroll-animation ...

281100
来自专栏逸鹏说道

动态加载JS 和 CSS

<script type="text/javascript"> $(function () { var filename = '/assets/css/main...

32950
来自专栏灯塔大数据

四款JavaScript库,助您搞定数据分析与可视化

无论来自哪个行业,世界各地的企业都开始越来越多地意识到数据驱动型决策的重要意义。数据分析目前已经成为各行各业最为关注的议题之一,企业亦开始专注于从数据中获取有...

51160

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励