VIP用户交流群:462197261 收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
在线客服:78895949
tonglan
  • 当前位置:
  • JS函数动态传递参数的方法分析【基于arguments对象】

    本文实例讲述了JS函数动态传递参数的方法。分享给大家供大家参考,具体如下:

    js函数体内可以通过arguments对象来接收传递进来的参数,利用这一对象属性可以动态传参。

    function box() {
     return arguments[0]+' | '+arguments[1]; //得到每次参数的值
    }
    alert(box(1,2,3,4,5,6)); //传递参数
    
    

    arguments对象的length属性可以得到参数的数量。

    function box() {
     return arguments.length; //得到6
    }
    alert(box(1,2,3,4,5,6));
    
    

    我们可以利用length这个属性,来智能的判断有多少参数,然后把参数进行合理的应用。比如,要实现一个加法运算,将所有传进来的数字累加,而数字的个数又不确定。

    function box() {
     var sum = 0;
     if (arguments.length == 0) return sum; //如果没有参数,退出
     for(var i = 0;i < arguments.length; i++) { //如果有,就累加
      sum = sum + arguments[i];
     }
     return sum; //返回累加结果
    }
    alert(box(5,9,12));
    
    

    例子:

    function loading() {
      var a="";
      for (var index in arguments) {
       a+=arguments[index]+"\n";
      }
      alert(a);
    }
    loading("xxx","yyyy","ccc");
    
    

    完整Demo示例:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>www.jb51.net arguments动态获取传参个数</title>
    </head>
    <body>
    <script>
     function box(){
      sum=0;
      for(i=0;i<arguments.length;i++){
       sum+=arguments[i];
      }
      return sum;
     }
     console.log(box(1,3,3,5,6))
    </script>
    </body>
    </html>
    
    

    运行结果:

    感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

    更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

    希望本文所述对大家JavaScript程序设计有所帮助。

    您可能感兴趣的文章:

    • 详解javascript立即执行函数表达式IIFE
    • 详解JavaScript的闭包、IIFE、apply、函数与对象
    • Python如何调用JS文件中的函数
    • JS 自执行函数原理及用法
    • 深入学习js函数的隐式参数 arguments 和 this
    • JS中超越现实的匿名函数用法实例分析
    • JS定义函数的几种常用方法小结
    • JavaScript函数IIFE使用详解

    广而告之:
    热门推荐:
    php的memcache类分享(memcache队列)

    memcacheQueue.class.php 复制代码 代码如下:<?php/** * PHP memcache 队列类 * @author LKK/lianq.net * @version 0.3 * @修改说明: * 1.放弃了之前的AB面轮值思路,使用类似数组的构造,重写了此类. * 2.队列默认先进先出,但增加了反向···

    详解Vue项目在其他电脑npm run dev运行报错的解决方法

    一个 Vue 项目从一台电脑上传到 github 上之后,再另外一台电脑上 git clone 。并使用 npm run dev 或 npm run start 发生以下报错的解决方法。 报错原因 缺少 node_modules 里面的依赖。在项目目录下使用 npm install 然后再 npm run dev。 如果在这一步当中, npm instal···

    HTML5引入的新数组TypedArray介绍

    Javascript中的数组是个强大的家伙: 你可以创建的时候不规定长度,而是动态的去改变长度。你可以把他当成普通的数组去读取,也可以当他是堆栈来使用。你可以改变数组中每个元素的值甚至是类型。 好吧,其实他是一个对象,比如我们可以这样去创建数组: 复制代码 代码如下: v···

    优化PHP程序的方法小结

    1. If a method c++an be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。   2. echo is faster than print. echo 比 print 快。   3. Use echo's multiple parameters instead of···

    解决Vue2.0中使用less给元素添加背景图片出现的问题

    在使用less在Vue.js中给元素添加背景图片时 或者你会出现这样的写法 background-image: url('../img/' + @{bg_url} + '2x.png'); 或者这样 background-image: url('../img/' + @bg_url + '2x.png'); 这样 background-image: url(../img/@{bg_url}2x.png); 还有这样 backgro···

    详解Vue整合axios的实例代码

    在vue开发中,不可避免要整合axios,简单记录一下整合中的文件,方便以后使用查找。 整合文件axios.js import axios from 'axios'; // 适配vue-resource const instance = axios.create(); instance.interceptors.request.use(config=> { //Serialize.decode(config); re···

    织梦dedecms整合添加ckplayer播放器支持flv,mp4等播放功能

    现在很多DEDE开发的视频网站使用的播放器是ckplayer,这个播放器功能非常强大,支持flv,mp4,swf等各种类型的文件播放器。当我们的视频不想上传到youku等视频网站时,可以使用这个播放器,这样可以自己控制自己的视频长度,清晰度,还可以给自己的视频添加上播放前的广告,我···

    PHP令牌 Token改进版

    正是由于使用了 base64 ,所以在把这个令牌通过 GET方法发送的时候,出现了问题。 比如:http://test/test.php?a=1+2 你用 $_GET["a"] 取得是:1 2 ,即那个加号没有了。一开始我用 urlencode 对其进行转换,但是总有那么···

    17道题让你彻底理解JS中的类型转换

    前言 类型转换是将值从一种类型转换为另一种类型的过程(比如字符串转数字,对象转布尔值等)。任何类型不论是原始类型还是对象类型都可以进行类型转换,JavaScript 的原始类型有:number, string, boolean, null, undefined, Symbol。 本文将通过 17 道题目来深入的了解 JS ···

    解决Mysql收缩事务日志和日志文件过大无法收缩问题

    一.MS SQL SERVER 2005 --1.清空日志       exec('DUMP TRANSACTION 数据库名 WITH NO_LOG') --2.截断事务日志:      exec('BACKUP LOG 数据库名 WITH NO_LOG') --3.收缩数据库文件(如果不压缩,数据库的文件不会减小  &nb···