浅谈js函数参数

在JS中函数是扮演者特别重要的角色,而一个函数之所以能有如此神奇的效果,它的参数发挥着重要的作用。

function text(a,b){ //a b 是形式上的参数  称为形参
	console.log(a,b)
}
text(1,2)  // 1,2 是实际的参数   称为实参

而js的函数的参数都是可以不定参的,而且不管是形参多了,还是实参多了对函数都没影响正常执行,主要依靠的是argument,他是一个类数组,管理的是我们往函数中传的实参,您看:

  function text (a,b){
            for(var i = 0; i<arguments.length;i++){
                console.log(arguments[i]); // 1,2,3,4
            }
        }
        text(1,2,3,4,)

上面这个函数果断打印出了我们传入的实际参数,那么argument和实参存在什么样的联系呢?是只单纯的保存实参,还是和实参有着映射关系呢?

  function text (a,b){
            arguments[0] = 4;
            console.log(a) //4
        }
        text(1,2,3,4,)

打印形参a,发现它当argument[0]被赋值为4以后,a也跟着变化了,说明argument和实参是有着映射关系的。
这时候就想问一问既然有实参的这个类数组,那形参有吗?形参是没有的,但是如果想知道形参和实参谁多谁少?有什么办法吗?那你看:

   function text (a,b){
            if(text.length > arguments.length){
                console.log('形参多了')
            }else if(text.length < arguments.length){
                console.log('实参多了')
            }else{
                console.log('一样')
            }
        }
        text(1,2,3,4,)   // 实参多了
        text(1)         // 形参多了
        text(1,2,)     // 一样

形参虽然没有argument这样的数组,但是可以通过函数名的length看到形参的长度,判断形参和实参谁多谁少。
知道了函数不定参我们还可以做一个函数不定参累加的小demo。

function add() {
            var a = 0;
            for (var i = 0; i < arguments.length; i++) {
                a += arguments[i];
            }
            console.log(z);
        }

入职不久的小前端从今以后开始自己的技术分享之旅,欢迎建议和批评。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值