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

    箭头函数 

    (笔记是自己看B站视频整理的,视频地址:https://www.bilibili.com/video/av86885716

    语法: 

    1. 写法 => 

    2. 格式 (参数) => 代码  (左参右码)

    3. 当函数体有且只有1行return代码时,右边括号可省略
    4. 左边有没有括号?看情况
    • 1参数可省 (可不省,也不会报错)
    • 0参数不可省 (易错)
    • 2个或以上都不省
    5. {}对象中,function有this,指向自己。但是箭头函数中,没有this (无数人中招) ======>>>>
     
    解决方案: 3个
    • 1. 放弃使用箭头函数
    • 2. 嵌入一个setTimeout函数,把箭头函数作为一个对象传入
    • 3. 使用class

    1. 写法 => 

    2. 格式 (参数) => 代码  (左参右码)

            //es5
            var k = function (a, b) {
                return a + b;
            }
            var ttt = k(1, 2);
            console.log(k);
            console.log(ttt);
    
            //es6 左参右码
            var k = (a, b) => {
                return a + b;
            }
            var ttt = k(1, 2);
            console.log(k);
            console.log(ttt);

    console: 

    3. 当函数体有且只有1行return代码时,右边括号可省略

            //箭头函数 左参右码 当函数代码有且只有一条,return和花括号可以省略
            var k = (a, b) => a + b;
            var ttt = k(1, 2);
            console.log(k);
            console.log(ttt);

    console: 

    4. 左边有没有括号?看情况

    • 1参数可省 (可不省,也不会报错)

            //es5
            var k2 = function (a) {
                return a + 1;
            }
            //es6
            var k = a => a + 1;
    
            var ttt = k(1);
            console.log(k);
            console.log(ttt);

    console: 

    • 0参数不可省 (易错)

            //es5
            var k3 = function () {
                return 3 + 1;
            }
            //es6
            var k = () => 3 + 1; 
            var ttt = k(1);
            console.log(ttt);

     5. {}对象中,function有this,指向自己。但是箭头函数中,没有this (无数人中招)

            var yy = {
                name: 'tian',
                age: 18,
                getName: function () {
                    console.log(this.name); //this指向自己本身
                }
            }
            console.log(yy);
            console.log(yy.getName);
            yy.getName(); //带上括号代表执行函数

    console:

     {}对象中,function有this,指向自己

            var yy = {
                name: 'tian',
                age: 18,
                getName2() {
                    console.log(this);
                },
                getName1: function () {
                    console.log(this);
                },
                getName3: () => {
                    console.log(this);
                }
            }
            yy.getName2();
            yy.getName1();
            yy.getName3(); //{}对象中,箭头函数没有this

    解决方案 2. 嵌入一个setTimeout函数,把箭头函数作为一个对象传入

            var yy = {
                name: 'tian',
                age: 18,
                getName2() {
                    console.log(this);
                },
                getName1: function () {
                    console.log(this.name);
                },
                getName3: () => {
                    console.log(this);
                },
                getName4: function () {
                    // setTimeout(函数对象, 时间);
                    setTimeout(() => {
                          console.log(this); //this指向上一层,整个yy
                        console.log(this.name);//这里this指向上一层,不是指向自己了
                    }, 0);
                }
    
            }
            // yy.getName2();
            // yy.getName1(this.name);
            // yy.getName3(); //{}对象中,箭头函数没有this
            yy.getName4();

    console:

    解决方案3. 使用class

     class Test {
                constructor() {
                    this.name = 'tian';
                    this.age = 18;
                }
    
                getName() {
                    console.log(this.name);
                }
            }
    
            var yy = new Test();
            yy.getName();

    使用class不会污染外面

            var name = '哈哈哈';
            class Test {
                constructor() {
                    this.name = 'tian';
                    this.age = 18;
                }
    
                getName() {
                    console.log(this.name);
                }
            }
    
            var yy = new Test();
            yy.getName();
            console.log(name);

  • 相关阅读:
    记录C#-WPF线程中如何修改值
    记录MySql错误消息
    记录C#-WPF布局面板
    记录TortoiseGit=>https请求/ssh请求配置
    工具-Xmind常用快捷键/使用
    记录C#泛型
    记录console的使用
    记录Flex布局的属性
    Spark的Monitoring
    HBase安装学习
  • 原文地址:https://www.cnblogs.com/jane-panyiyun/p/12544197.html
Copyright © 2011-2022 走看看