JavaScript ES6 函数默认参数及暂时性死区

我们都知道,ES6里函数默认参数是有暂时性死区的,首先我们先来看看关于函数默认参数的注意点:

●参数默认值的注意点:

1,在使用默认参数时,arguments 对象的值不反映参数的默认值,它只反映传给参数的默认值

function test(a=1){//这我们使用函数参数默认值a=1

    console.log(arguments[0])//我们这里在控制台输出arguments[0]来看看能不能出来1

}
test()

这里我们可以看到 输出的是undefined

2,与严格模式一样,修改命名参数也不会影响arguments对象,它始终以调用函数时传入的值为准

function show(a = 10) { //这里给函数设置一个默认参数 a=10
            a = 12 //然后再将12赋给a
            console.log(arguments)//输出一下arguments对象,
            //检查一下arguments是否能够反映修改后的默认参数
        }
        show()

这里我们可以看到 arguments对象依然不能反映修改后的默认值参数 

3,函数的默认参数,只有在函数被调用时才会求值,不会在函数定义时求值

4,箭头函数同样也可以使用默认参数,必须使用括号

5,暂时性死区: 后定义的默认值可以引用先定义的参数,但是前定义的默认值不能引用后定义的参数

tips:当我们函数有一个默认值参数,一个普通参数的时候,我们调用函数传参的时候要注意了:如果你只传一个参数,这个参数默认会传递给你函数的第一个参数,这时候输出第二个参数就是undefined,所以如果第一个参数需要他使用默认值的时候,调用函数时第一个参数得填undefined

function show(a = b, b) {
            console.log(a)
            console.log(arguments)
        }
        show(undefined, 2)
//当我们先定义的默认参数去引用后定义的参数时就会报错

参数存在于自己的作用域中,它们不能引用函数体的作用域

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值