zoukankan      html  css  js  c++  java
  • es6函数扩展

    一、函数的扩展
    1.函数参数的默认值
    直接将默认值写在形参之后,有默认值的形参要放在没有默认值形参的后面
    语法:
    function fun(x,y='word'){
    console.log(x,y);
    }
    fun('hello','nihao');
    fun('hello');
    2.函数参数与解构结合使用
    function fun({x,y=5}={}){
    console.log(x,y);
    }
    注意:该函数如果传入对象,那么就与传入的对象进行解构,如果不传任何内容,就与空对象进行解构
    3.函数参数默认值的位置
    如果函数有默认参数,这个默认值参数一般会是尾参数(放在最后),如果非尾参数设置了默认值,那么这个参数必须要传值,默认值将没有意义
    function fun(a,b=3,c){}
    fun(1,2.3)
    4.函数参数的位置
    形参的个数:函数名.length
    函数形参个数不包括有默认值的参数以及默认值参数以后的所有参数,也不包括rest参数(...rest);
    实参个数:函数内部调用arguments.length
    5.rest参数
    es6引入的rest参数(...rest),主要用于接收形参可接收参数之外的多余的实参,这样我们就不用使用arguments这个类数组了
    rest参数是一个数组,多余的实参都会存放进去
    注意:如果一个函数有多个参数,无默认值得到参数放在最前面,有默认值的参数放在中间,rest参数一定是在最后边
    数组解构与rest结合:
    ...[1,2,3]将该数组解构(拆开) 1,2,3
    6.箭头函数=》
    1)语法:
    没有参数,函数体只有一句话
    var f=()=>console.log(123);
    ===>
    var f=function(){console.log(123)}
    **************************************************************************************
    只有一个参数。函数体只有一句话
    var f2=a=>console.log(a);
    ===>
    var f2=function(a){console.log(a)}
    **************************************************************************************
    如果有很多参数,函数体只有一句话
    var f3=(a,b,c)=>console.log(a+b+c);
    ===>
    function f3(a,b,c){console.log(a+b+c)};
    ****************************************************************************************
    一个参数。函数体只有一个返回值
    var f4=a=>a;//参数是a,返回值是a
    ===>
    function f4(a){return a};
    ****************************************************************************************
    一个参数,函数体有很多距话还包含返回值
    var f5=a=>{
    var b=a+2;
    return b;
    }
    ===>
    function f5(a){
    var b=a+2'
    return b;
    }
    ******************************************************************************************
    即使调用函数 IIFE
    var sum=(a=>a+a)(10)
    ==>
    var sum=(function(a){return a+a})(10)
    ************************************************************************************************
    一个参数,函数体一句话返回一个对象
    es6规定大括号是一个代码块,不能直接返回一个代码块,一句话想要返回的话,必须是表达式
    var fun =a=>{name:'lisi'}//错误X
    将代码块降级为表达式,使用小括号
    var fun=a=>({name:'lisi'})//正确
    ===>
    function fun(a){
    return {name:'lisi'}
    }
    2)箭头函数与解构结合
    3)箭头函数用于简化回调函数
    var arr=[1,2,3,4,5,6];
    var arr1=arr.map(i=>i*i);
    ===>
    var arr2=arr.map(function(i){return i*i})
    4)rest参数与箭头函数结合
    5)注意事项:
    1)函数体内部的this指向,指向函数的拥有者。箭头函数本身没有自己的this,所有的箭头函数函数通过call,bind,apply调用时传入的this,都是没有效果的,箭头函数的this,指向该函数被定义是所在的对象
    事件处理函数,不能使用箭头函数,因为其中的this不会指向事件源,而是指向箭头函数定义时所在的环境对象
    2)坚决不能使用箭头函数声明构造函数,也就是不能使用new运算符调用箭头函数,
    3)箭头函数中没有arguments对象,不可以使用这个对象,如果需要使用,那么使用rest参数(。。。rest)
    4)箭头函数嵌套

  • 相关阅读:
    Spark的协同过滤.Vs.Hadoop MR
    IAAS: IT公司去IOE-Alibaba系统构架解读
    八种Docker容器开发模式解析
    Docker的特性解析
    Docker的官网在线--中文教程
    三维重建:深度相机方案对比-KinectFusion的基本原理(尺度)
    ES: 机器学习、专家系统、控制系统的数学映射
    算法设计之—常用算法之-分支界定法
    图像特征综述
    CaptCha的现状与未来
  • 原文地址:https://www.cnblogs.com/txf-123/p/11550432.html
Copyright © 2011-2022 走看看