关于JS函数默认参数问题的表现形式

对于JS函数参数传入,在实际运用中常常使用默认。包括不同参数个数下少传、错传或依赖传入状态下,稳健的默认参数设置都是JS函数不报错、不出bug的重要手段。

一、默认参数的表现形式种类

1.“或”表达式赋值方式

function markeRe(url,timeout,callback){

              timeout=timeout || 2000;

              callback=callback || function(){};

              //函数的其余部分

        }

2.“三目”表达式赋值方式

     function markeRe(url,timeout,callback){

              timeout=timeout?timeout:2000;

              callback=callback?callback:function(){};

              //函数的其余部分

        }

    3.改进后的安全“三目”表达式赋值方式

    function markeRe(url,timeout,callback){

              timeout=(typeof timeout !="undefined")?timeout:2000;

              callback=(typeof callback !="undefined")?callback:function(){};

              //函数的其余部分

       }

4.直接定义参数赋值方式

   function markeRe(url,timeout=2000,callback=function(){}){

              //函数的其余部分

       }

5.依赖赋值方式

   function markeRe(first,second=first,three=first*second){

              return first+second+three;

       }

       console.log(markeRe(1));  //输入结果:3

       console.log(markeRe(1,2)); //输入结果:5

       console.log(markeRe(1,undefined,3)); //输入结果:5

6.不定参数传入方式

   function markeRe(first,...keys){

              let result=first;

              for(let i=0,len=keys.length;i<len;i++){

                     result+=keys[i];

                    

              }

              return result;

       }

       var first=10;

    console.log(markeRe(first,1,2)); //输出结果:13

    console.log(markeRe(first,1,2,3)); //输出结果:16

    console.log(markeRe(first,1,2,3,4)); //输出结果:20

console.log(markeRe(first,1,2,3,4,5)); //输出结果:25

//其他更多参数,如first,1,2,3,4,5,6...

var keys=[1,2,3,4,5]

console.log (markeRe(first,...keys)); //输出结果:25

//其他更多参数,如var keys=[1,2,3,4,5,6…]

7.构造函数传入方式

var add=new Function("first","second=first","return first+second");

console.log(add(1,1)); //输出结果:2

console.log(add(1)); //输出结果:2

二、默认参数的注意事项

   1.非严格模式下,传入的默认参数可以在函数内部进行改变,相应的arguments对象也会对等改变。但是,在严格模式下,传入的默认参数不能改变。即使进行了改变,arguments也是记录的传入值,会造成非期望结果或出现错误bug等现象。

   2.如果将浏览器设置为ES6解释,默认方式执行严格模式,即传入的默认参数不可在函数内部进行改变。

   3.为保证函数运行更加稳健,推荐对默认进行typeof安全检查设置。

   4.对于依赖参数使用时,被依赖的参数必须是正确且必传参数,否则将报错。

   5.当使用函数调用结果作为默认参数值时,如果忘记写小括号,此时,传入的是对函数的引用,而不是对函数调用的结果。

   6.对于不定默认参数传入形式时,只能将不定参数放在参数最后一个,否则将出现非期望结果或出现错误bug等现象。且每个函数最多只能声明一个不定参数,否则将报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值