JavaScript中的函数与arguments

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

《JavaScript中的函数与arguments》

  • 本来我多传的参数在arguments中。
    实参有多少个,只需挪用 arguments.length即可,当前有4个
  • 函数的形参个数能不能晓得?
    固然能够 , 形参个数就是 min.length
  • arguments看着像是个数组,不过,它可并非一个数组哦,它是个object范例的,

《JavaScript中的函数与arguments》

  • 怎样取到一切的参数,就显而易见了
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。

    原文作者:精灵
    原文地址: https://segmentfault.com/a/1190000013094996
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞