美文网首页Web前端之路让前端飞
JavaScript中的函数与arguments

JavaScript中的函数与arguments

作者: 小枫学幽默 | 来源:发表于2017-12-31 12:49 被阅读66次

js中怎么定义一个函数?

// 定义一个函数,求出参数中的最小值
 function min(a,b,c,d...) {
  //函数的代码
}

上面的函数怎么调用?

min(1,2,3,4,5,6,7...);

定义一个求两个数中最小值的函数

function min(a, b) {
  return a>b? b:a;
}

调用

min(1,2);
  • 1 函数的形参是什么?
    函数的形参是定义该函数时,你设置的函数参数个数
  • 2 min函数的形参有几个?
    2个,a和b
  • 3 min函数的实参有几个?
    调用函数时传递几个就是有几个,上面调用时,我们传递了 1和2 ,那么实参个数就是两个

问?既然实参传递几个就是有几个,调用函数时,我传递的实参个数能不能大于形参个数?

function min(a, b) {
  return a>b? b:a;
}
var result=min(1,2,-1,4)
console.log(result) //输出 1

以上代码说明,我们可以传递的参数大于形参个数,且不会出错。

  • 为什么结果是1,而不是-1?
    对于函数来说,实参和形参是一一对应的,即a=1,b=2,我们的代码只要求a,b参数运算,那么结果自然是1。

问题来了,我们传递了4个参数,a,b用了,那么-1,4 这两个参数去哪了,我能不能拿到?

答案是,我们的另外两个参数被放在了函数的arguments中,我们来看看arguments是个什么

function min(a,b) {
  console.log(arguments);
  return a>b? b:a;
}

var result=min(2,6,90,10)
console.log(result) //输出 2
image.png
  • 原来我多传的参数在arguments中。
    实参有多少个,只要调用 arguments.length即可,当前有4个
  • 函数的形参个数能不能知道?
    当然可以 , 形参个数就是 min.length
  • arguments看着像是个数组,不过,它可并不是一个数组哦,它是个object类型的,
    image.png
  • 怎么取到所有的参数,就不言而喻了
for(var i in arguments){
    console.log(arguments[i])
 }
  • 说了这么半天,这玩意儿有啥用处?
//两个数字中的最小值
function min(a,b){
  return Math.min(a,b);
}
min(1,2);
//四个数字中的最小值
function min(a, b, c, d){
  return Math.min(a,b,c,d);
}
min(1, 2,3,4);
//6个数字中的最小值
function min(a, b, c, d,e,f){
  return Math.min(a, b, c, d,e, f);
}
min(1, 2,3,4,5,6);
//n个数字中的最小值
function min(a, b, c, d,e,f,...n){
  return Math.min(a, b, c, d,e, f,...n);
}
min(1, 2,3,4,5,6,...n);
//随着我们要比较的数字的增多,我的函数形参数目也越来越多,
//有了arguments这个对象,形参数目不就可以不写了么,像这样
function min(){
  var res=arguments[0]
  for(var i in arguments){
    if(i==0) continue;
    res=res>arguments[i]?arguments[i]:res;
  }
  return res;
}
min(1, 2,3,4);

//代码更精简点,还可以这样
function min(){
  return Math.min.apply(this,arguments);
}
min(1, 2,3,4,-1,2,0-3);//-3

那么我们可以少传么?

function min(a, b) {
  return a>b? b:a;
}
var result=min(1)
console.log(result) //输出 1

以上代码说明,我们可以传递的参数小于形参个数,且不会出错。
为什么不会出错?因为当我们不给min函数传递 b 这个参数的时候,b这个参数为 undefined,这时候,a>undefined 为false,因为b转换为数值类型之后是 NaN。

相关文章

  • JavaScript中的函数与arguments

    js中怎么定义一个函数? 上面的函数怎么调用? 定义一个求两个数中最小值的函数 1 函数的形参是什么?函数的形参是...

  • (函数)函数定义和调用+变量作用域与解析赋值

    函数的定义和调用 在JavaScript中,定义函数的方式如下: arguments JavaScript还有一个...

  • JavaScript中的arguments对象

    JavaScript中的arguments对象 arguments 是一个类似数组的对象, 对应于传递给函数的参数...

  • javaScript 基础 04

    函数 1.arguments arguments JavaScript还有一个免费赠送的关键字arguments,...

  • JS-day04-4.27

    arguments的使用 JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一...

  • 02-JavaScript

    一、基础 1.函数的arguments 其实Javascript并没有重载函数的功能,但是Arguments对象能...

  • 2018-06-06

    JavaScript函数 1. arguments对象 — 函数的实参参数集合 // 循环...

  • 函数

    定义函数 arguments JavaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用...

  • 初识JavaScript函数Arguments模拟重载

    在 JavaScript 中并没有重载函数的功能,但每个函数中的 Arguments 对象可以模拟重载的实现。 1...

  • JavaScript 函数中的 arguments 对象

    1. arguments 是一个类似数组的对象, 和传递给函数的参数相对应。 2. arguments 对象是所有...

网友评论

    本文标题:JavaScript中的函数与arguments

    本文链接:https://www.haomeiwen.com/subject/bnmogxtx.html