zoukankan      html  css  js  c++  java
  • 03-箭头函数

    箭头函数

    基本语法:

    ES6允许使用“箭头”(=>)定义函数

    普通函数:

        <script type="text/javascript">
        var f = function(a){
            return a;
        }
        t = f(1)
        // console.log(typeof(t))
        console.log(t)
        </script>

     箭头函数 等同于上面:

        <script type="text/javascript">
    
        // f = 函数名 a = 参数 a = 返回值
        var f = a => a
        t = f(1)
        console.log(t)
    
        </script>

     如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。

    无参数:

        <script type="text/javascript">
    
        // f = 函数名 () = 无参数 a = 返回值
        var f = () => 5;
        b = f()
        console.log(b)
    
        </script>
    // 等同于
    var f = function () {
    return 5

    };

    多个参数:

        <script type="text/javascript">
    
        // sum = 函数名 (num1,num2)= 多个参数 num1+num2 = 返回值
        var sum = (num1,num2) => num1+num2;
    
        s = sum(1,2)
        console.log(s)
        </script>
    // 等同于
    var sum = function(num1, num2) {
      return num1 + num2;
    }

    使用箭头函数注意点:

    箭头函数有几个使用注意点。

    (1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

    正常情况:

        <script type="text/javascript">
    
        //自变量方式创建对象
        var person = {
            name:'日天',
            age:30,
            fav:function(){
                
                console.log('喜欢gril')
            }
        }
        person.fav();
    
        var person = {
            name:'日天',
            age:30,
            fav:()=>{
                console.log('喜欢gril_2')
            }
        }
        person.fav();
    
        </script>

    2.this对象 异常现象:第一个坑

        <script type="text/javascript">
    
        //自变量方式创建对象
        var person = {
            name:'日天',
            age:30,
            fav:function(){
                // 普通函数this指的就是当前对象
                console.log(this)
                //普通函数取得是正常的函数对象
                console.log(this.name)
            }
        }
        person.fav();
    //======================================================================
        var person = {
            name:'日天',
            age:30,
            fav:()=>{
                // 箭头函数指的是window
                console.log(this)
                //我们发现箭头函数的this 取的不是日天
                console.log(this.name)
            }
        }
        person.fav();
        </script>

     使用箭头函数,它表示定义时所在的对象window。

    第二个坑

       <script type="text/javascript">
    
        //自变量方式创建对象
        var person = {
            name:'日天',
            age:30,
            fav:function(){
                //arguments 就是你当前传的函数值
                console.log(arguments)
    
            }
        }
        person.fav(1,2,3);
    //======================================================================
       //2.第二个坑 arguments 不能使用
        var person = {
            name:'日天',
            age:30,
            fav:()=>{
                // 箭头不能取arguments
                console.log(arguments)
            }
        }
        person.fav(2,3,4);
        </script>

        //总结
        // 箭头函数
        //function(){} === () =>()
    
        //二个坑
        //1.this 的指向发生改变,指向了定义对象时的对象
        //2.arguments 不能使用
  • 相关阅读:
    Java 代理模式
    ReentrantLock 详解
    Java线程池详解
    ConcurrentHashMap 解读
    CountDownLatch/CyclicBarrie用法记录
    微信接入笔记记录
    iOS设计模式
    iOS设计模式
    iOS设计模式
    iOS设计模式
  • 原文地址:https://www.cnblogs.com/Rivend/p/11878790.html
Copyright © 2011-2022 走看看