• JavaScript箭头函数(Lambda表达式)


    箭头函数也叫lambda表达式

    据说其主要意图是定义轻量级的内联回调函数。

    格式:x => {表达式} 

    说明:=和>之间不能有空格等其他字符,而=>字符前后,可以有空格。

    例如有:

    1 var arr = ["wei","ze","yang"];
    2 arr.map(item=>"Mr."+item); // ["Mr.wei", "Mr.ze", "Mr.yang"]

    实则

    1 var arr = ["wei","ze","yang"];
    2 arr.map(function(item){
    3     return "Mr."+item;
    4 }); 

     

    1.注意点:

    (1)当箭头函数有一个参数的时候,参数可以不加括号,没有参数或多个参数的时候就必须要加括号。

    定义 函数名 = 参数 => 函数体

    1 var student = name => "my name is " + name;
    2 console.log(student("wei ze yang"));
    3 // my name is wei ze yang

    (2)关于返回值,如果函数体只有一行代码,则会自动return回计算结果,如果函数体不止一行,应该用花括号括起来,并且要显示地调用return返回值。(如果不需要返回值,则可以不用写return相关语句)

    定义 函数名 = (参数,参数) => {

      函数体;

      return 返回值;    

    }

    1 var student = (name,age) => {
    2     age +=1;
    3     return "name:" + name + ",age:" + age;
    4 }
    5 console.log(student("wei ze yang",21));
    6 // name:wei ze yang,age:22

    2.arguments object

    在正常的函数内的使用:

    1 function student(name,age){
    2     console.log(arguments[0]);
    3 }
    4 
    5 student("weizeyang",22);

    但在箭头函数中,则不会暴露argument对象

    1 var student = (name,age) => {
    2     console.log(arguments[0]);
    3 }
    4 
    5 student("weizeyang");  // arguments is not defined 

    所以,argument将简单地指向当前作用域内的一个变量

    复制代码
    1 var arguments = ["Mr.wei"];
    2 
    3 var student = (name,age) => {
    4     console.log(arguments[0]);
    5 }
    6 
    7 student("weizeyang");  // "Mr.wei"
    复制代码

    或者这时可以使用“剩余参数”的时候代替

    复制代码
    1 var arguments = ["Mr.wei"];
    2 
    3 var student = (...arguments) => {
    4     console.log(arguments[2]);
    5 }
    6 
    7 student("weizeyang",22,true);  // true
    复制代码

    3.绑定this的值

    箭头函数是lexically scoped(词法作用域),这意味着其this绑定到了附近scope的上下文。

    也就是说,不管this指向什么,都可以用箭头函数来保存数据。

    复制代码
     1 var student = {
     2     names:["wei","ze","yang"],
     3     setName: function() {
     4         console.log(this);
     5         this.name = this.names.join("")
     6     },
     7     getName: function() {
     8         console.log(this);
     9         return () => {
    10             return {
    11                 myName : "my name is " + this.name
    12             }    
    13         }
    14     }
    15 }
    16 
    17 student.setName();
    18 var student1 = student.getName();
    19 console.log(student1().myName);
    20 // my name is weizeyang
    复制代码

     有图为证,看下

    4.相关文档

    http://blog.csdn.net/cuit/article/details/53200335

    https://zhuanlan.zhihu.com/p/24856798

    出处:https://www.cnblogs.com/wzy1569178479/p/7366314.html

    参考:

    https://blog.csdn.net/cuit/article/details/53200335

    神奇的lambda表达式——函数式编程必学

    您的资助是我最大的动力!
    金额随意,欢迎来赏!
    款后有任何问题请给我留言。

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我。(●'◡'●)

    如果你觉得本篇文章对你有所帮助,请给予我更多的鼓励,求打             付款后有任何问题请给我留言!!!

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【Jack_孟】!

  • 相关阅读:
    如何解决列表框控件宽度不够的问题
    SQL Server 2005的服务器角色(public)的问题
    使用多结果集读取数据减少服务器往返,提高性能
    SQL SERVER的单用户模式以及专用管理员连接
    SQL Server错误严重性级别和异常处理
    使用TransactionScope做分布式事务协调
    通过编程为Outlook 2007添加邮件规则
    微软中国的相关研发团队 交流平台
    有关连接字符串的一些细节
    Web Application和Web Site两个模板的比较
  • 原文地址:https://www.cnblogs.com/mq0036/p/14333817.html
Copyright © 2020-2023  润新知