JS箭头函数和Java中lambda表达式对比

本文主要介绍了Java中的lambda表达式和JavaScript中的箭头函数。Java的lambda表达式是匿名函数,可让代码更简洁,介绍了其语法和常见使用场景;JavaScript的箭头函数语法更短,还探讨了其this指向问题,与普通函数的this指向有所不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

箭头函数和lambda表达式

Java中lambda表达式

Lambda表达式是JAVA8中提供的一种新的特性,是一个匿名函数方法。可以把Lambda表达式理解为一段可以传递的代码,可以写出更简洁、更灵活的代码。

这里先给简要的定义:将匿名函数赋值给变量的简写方式的函数称为lambda 表达式。
例:lambda表达式创建线程

public static void main(String[] args) {
        Thread t1=new Thread(() -> System.out.println("匿名内部类方式-启动线程"));
        t1.start();
}

lambda语法的标准格式:(参数列表)->{方法体}
即在参数和函数之间加上一个箭头符号 “->”

目的是:将一个函数赋值给一个变量;

  1. public可以不用写
  2. 函数名字是多余的,因为已经赋值给了变量
  3. 返回类型可省略,编译器自己可以判断返回类型(平时加上返回类型是防止自己写错的)
  4. 参数类型可省略,编译器自己可以判断参数类型

lambda表达式的常见使用场景

根据之前的思路;只要找到Java中函数式接口的皆可以放出lambda表达式的大招。
JDK 8之前已有的函数式接口

java.lang.Runnable
java.util.concurrent.Callable
java.security.PrivilegedAction
java.util.Comparator
java.io.FileFilter
java.nio.file.PathMatcher
java.lang.reflect.InvocationHandler
java.beans.PropertyChangeListener
java.awt.event.ActionListener
javax.swing.event.ChangeListener

JavaScript中的箭头函数

箭头函数允许我们用更短的语法定义函数。箭头函数可用于替代传统函数function() {}

var fun1 = function(int x,int y){
    return (x+y);
}

简写如下:

var fun1 = (x,y)=>x+y;

this相关问题

例子:

var id = 'GLOBAL'; 
var obj = { 
        id: 'OBJ', 
        a: function(){ console.log(this.id); }, 
        b: () => { console.log(this.id); } 
        };
        obj.a(); // 'OBJ' 
        obj.b(); // 'GLOBAL' 

上面这个例子,对象obj的方法a使用普通函数定义的,普通函数作为对象的方法调用时,this指向它所属的对象。所以,this.id就是obj.id,所以输出’OBJ’。
但是方法b是使用箭头函数定义的,箭头函数中的this实际是继承的它定义时所处的全局执行环境中的this,所以指向Window对象,所以输出’GLOBAL’。(这里要注意,定义对象的大括号{}是无法形成一个单独的执行环境的,它依旧是处于全局执行环境中!!)

对于JavaScript程序中的this,如果this不属于任何function,那么这个this就指代JS全局对象;如果是浏览器端运行的JS程序,那么这个this就指代window全局对象。
如果这个this属于某个function,那么this指代的就是调用该function的对象。
若这种情况下function只是一个普通的函数,而不是某个类的方法,那么this的指代存在两种可能:

  1. 在ECMAScript 3标准,以及ECMAScript 5标准的非严格模式下,this指代全局对象。
  2. 在ECMAScript 5标准的严格模式下,this指代undefined。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

封心心心心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值