ES6函数的参数和对象的扩展

基础知识备忘
&&和||
a&&b 一个条件为false就不再判断
a||b 一个条件为true就不再判断

函数的参数

参数相当于是默认声明了的,内部不能重复声明(针对let和const)同名变量
形参相当于是声明了一个var的变量
在之前的学习中,了解到JS中对于形参的要求十分宽松。是否全部传入都可以运行,只不过没传入的会是undefined。这在C系语言里面是不能实现的。

在ES6中,参数可以设置默认值

function go(a,b='qwer'){
   
}

这样对于一些固定值就可以减少代码量。

那么将参数和解构赋值结合会有什么效果呢?
如前面学习所知,结构赋值两侧的结构要匹配上,所以有时候参数就算有默认值,也不能不传。
比如:

function go({
   x = 2,y = 2}){
   console.log(x,y)};
go();

上面这种情况就会报错,而且经过测试发现,默认值里面再嵌套默认值是会报错的。

参数的length属性
会返回没有默认值参数的个数。

函数的name属性
对于没有命名的函数(就是直接new Function()生成的函数),他的name是anonymous(就是匿名的意思)。
如果是用bind()方法改变了this指向的函数,那么name属性会是bound+函数名。

重点:作用域

之前学习过一个自由变量的概念,就是当要用到一个变量时,如果当前作用域中没有,就会往外部作用域找这个变量。(注意是往外,这个在一般的例子中很容易理解,但是在参数中就容易出错)

let x = 1;
function go(y = x){
   
 let x = 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值