玩转ES6之函数

带参数的默认值函数

<script type="text/javascript">
function add(a = 10,b = 20){
    return a + b;
}
console.log(add());        
</script>

默认的表达式作为函数(函数里面套函数或表达式)

<script type="text/javascript">
function add(a = 10,b = getVal(5)){
    return a+b;
}  

function getVal(val){
    return val + 5;
}
console.log(add(10));
</script>

含对象(类似结构体)的函数

function pick(obj){
    let result = Object.create(null);
    for(let i = 1;i < arguments.length;i++){
        result[arguments[i]] = obj[arguments[i]]
      }
      return result;
}
let student = {
    name:'hy',
    num:'123',
    sex:'male'
}
let stu = pick(student,'name','num','sex');
console.log(stu);

含剩余参数的函数

剩余参数:由三个…和一个紧挨着的具名参数指定 (...keys)
完美取代了上面对arguments的使用

function pick(obj,...keys){
    let result = Object.create(null);
    for(let i = 1;i < keys.length;i++){
        result[keys[i]] = obj[keys[i]];
      }
      return result;
}
let student = {
    name:'hy',
    num:'123',
    sex:'male'
}
let stu = pick(student,'name','num','sex');
console.log(stu);

扩展运算

扩展运算也是由…构成,与剩余运算符联系紧密,但与之不同的是:
剩余运算符:把多个独立的参数合并到一个数组里面
扩展运算符:将一个数组分割,并将各个项作为分离的参数返回给函数

const arr = [10,20,30,40,50,100,20];
console.log(Math.max(...arr));

闭包函数

function createCounter() {
    let count = 0;
    return function() {
        count += 1;
        return count;
    };
}

let counter = createCounter();
console.log(counter()); // 输出 1
console.log(counter()); // 输出 2
console.log(counter()); // 输出 3

在这个例子中,createCounter 函数返回一个匿名函数,这个匿名函数能够访问其外部函数的作用域,因此可以访问并修改 count 变量。每次调用 counter 函数时,都会增加 count 的值,并返回新的值。这就是闭包的基本概念。

箭头函数

使用=>来定义,取代了function( ){ }
一. 使用function:

let add = function(a,b){
        return a + b;
    console.log(add(10,20));    
    }

二. 使用=>

1.
let add =(a,b)=>{
       return a + b; 
}
console.log(add(10,20));
2.
let add =(a,b)=>a+b;
console.log(add(10,20));
3.含对象的时候(注意{}不要省略)
let getObj = id => ({ id: id, name: 'awagn' });
        console.log(getObj);

箭头函数使用时的注意事项

  1. 函数内部没有arguments
  2. 函数内不能使用new函数来实例化对象
  3. 箭头函数只能用于简化函数表达式
  4. 箭头函数不能用于函数声明,构造函数,原型
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值