五、javascript函数


一、Javascript函数

1.1 带参数默认值的函数

JS函数的独特之处是可以接受任意数量的参数,而无视函数声明处的参数数量。这让你定义的函数可以命名用不同的参数数量来调用,调用时未提供的参数经常会使用默认值来代替。

// 在ES5中模拟参数默认值
function func01(url, timeout,callback){
   
    timeout = timeout || 2000
    callback = callback || function(){
   }
    // 函数的余下部分
}

// timeout与callback实际上都是可选参数,因为他们都会在参数未被提供的情况下使用
// 默认值。逻辑或运算符(||)在左侧的值为假的情况下总会返回右侧的操作数。由于函数
// 的具名参数在未被明确提供时会是undefined,逻辑或运算符就经常被用来给缺失的参数
// 提供默认值。不过此方法有个瑕疵,在此处的timeout的有效值实际上有可能是0,但是
// 因为0是假值,就会导致timeout的值在这种情况下会被替换为2000.

// 可使用更安全的替代方法实现
function func02(url, timeout, callback){
   
    timeout = (typeof timeout !== 'undefined') ? timeout : 2000
    callback = (typeof callback !== 'undefined') ? callback : function(){
   }
    // ......
}

// ES6中的参数默认值
// ES6能更容易地为参数提供默认值,它使用了初始化形式,以便在参数未被正确传递进来时使用
function func03(url, timeout=2000, callback=function(){
   }){
   
    //......
}
let value = 5
function getValue(){
   
    return value++
}
function add(first, second=getValue()){
   
    return first + second
}
console.log(add(1, 1)) //2
console.log(add(1))    //6
console.log(add(1))    //7

代码讲解
将函数调用作为参数的默认值时需要小心,如果你遗漏了括号,例如在上面盒子中使用
second=getValue,你就传递了对于该函数的一个引用,而没有传递调用函数的结果。

1.2 剩余参数

剩余参数( rest parameter )由三个点( … )与一个紧跟着的具名参数指定,它会是包含传递给函数的其余参数的一个数组,名称中的“剩余”也由此而来。
剩余参数的限制条件
剩余参数受到两点限制。一是函数只能有一个剩余参数,并且它必须被放在最后。

function func01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永恒的宁静

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值