zoukankan      html  css  js  c++  java
  • ES6——函数

    • 参数扩展

      • 默认参数

        function fn(name,age=1){
            console.log(name+","+age)
        }
        fn("Amy",18)	//Amy 18
        fn("Amy",)		//Amy
        fn("Amy")		//Amy 1
        

        注:

        1. 使用默认参数,不允许同名参数
        2. 只有在未传递参数或参数为 undefined 时,才使用默认参数, null 值是有效的值传递
      • 不定参数

        function f(...values){
            console.log(values.length)
        }
        f(1,2)		//2
        
    • 箭头函数

      更加简洁的函数书写形式

      参数 => 函数体
      
      • 基本用法

        let f = v=>v
        //等价于
        let f = function(v){
            return v
        }
        f(1)	//1
        

        没有参数时或有多个参数时,用 () 括起来

        var f=(a,b)=>a+b
        var f=()=>1
        

        函数体多行语句时,用 {} 括起来,一行语句 {} 可省略

        返回对象时,为区分代码块,用 () 将对象括起来

        var f=(id,name)=>({id:id, name:name})
        

        注:箭头函数没有 this、super、arguments、new.target的绑定

      • this

        • 普通函数
          1. this 总是代表着函数的直接调用者
          2. 默认情况下,没有直接调用者,this -> window
          3. call,apply,bind 可以绑定 this
        • 箭头函数
          1. 指向上下文对象(父级作用域)的 this 指向——指向最近的函数的 this 指向
          2. 偶尔没有上下文对象则指向 window
          3. apply、call、bind 无法改变箭头函数的 this 指向
        var Person = {
            age: 18,
            sayHello: function(){
                setTimeout(function(){
                    console.log(this.age)
                })
            }
        }
        var age = 20
        Person1.sayHello()	//20,setTimeOut的匿名函数没有直接调用者,this 指向 window
        var Person1 = {
            age: 18,
            sayHello: function(){
                setTimeout(()=>{
                    console.log(this.age)
                })
            }
        }
        var age = 20
        Person1.sayHello()	//18,指向 sayHello() 的 this
        
        
        var Person = {
            age:18,
            sayHello:()=>{
                console.log(this.age)
            }
        }
        var age = 20
        Person.sayHello()	//20	没有上下文函数,this 指向 window
        
        
        var Person1 = {
            age: 18,
            sayHello: function(){
                console.log(this.age)
            }
        }
        var age = 20
        Person1.sayHello()		//18,函数的直接调用者为 Person1 ,所以 this 指向 Person1
        
  • 相关阅读:
    [算法]统计排序(桶排序)
    [算法]使用bitmap高效进行矩阵运算
    [C++]搞清楚类中构造与析构的顺序
    [C++]关于友元的总结
    [mysql]视图(转)
    [mysql]存储过程(转)
    [C++]对象模型总结
    [mysql]Linux下C语言连接mysql
    [python]使用xml.dom读写XML文件
    Windows 10 64位操作系统 下安装、配置、启动、登录、连接测试oracle 11g
  • 原文地址:https://www.cnblogs.com/angle-yan/p/13417215.html
Copyright © 2011-2022 走看看