聊一聊JavaScript和Java、C#的“箭头函数”(二)

简介: ES6 中引入了箭头函数,这也是现在前端面试几乎必考的内容(没考箭头函数,我都不好意思说自己是面试官,哈哈,开个玩笑)。有人问我,箭头函数是个什么东西?我跟他说,就像Java和C#中的lambda。

3. 作为方法的参数

在JavaScript中,经常会用到类似callback的回调方法,那么箭头函数是不是也可以呢?

3.1 JavaScript:

let func = (s)=> { 
    console.log(s); 
};
var showLog = function(str,action){
    action(str);
}
showLog("hello world",func);

3.2 Java

本例用Consumer代替了第一节中的自定义的Operate接口。其实Consumer就是框架帮我们预定义的泛型接口,避免我们总需自定义一个接口:

public static void main(String[] args) {
    Consumer<String> func = (String s)->{
        System.out.println(s);
    };
    showLog("hello world",func);
}
public static void showLog(String str, Consumer<String> action){
    action.accept(str);
}

3.3 C#

本例用Action代替了第一节中的自定义的delegate。其实Action就是框架帮我们预定义的泛型接口,避免我们总需自定义委托:

public static void Main(string[] args)
{
    var func = (string s) => { Console.WriteLine(s); };
    showLog("hello world", func);
}
public static void showLog(string str ,Action<string> action) 
{ 
    action(str);
}

4. 总结

总体来说,三种语言的使用方法还是比较类似的。可能是都源于C的原因?

其实对于面向对象语言来说,好多都是相通的,个人感觉经常对比一下,有助于加深记忆。

另外,如果有机会,学一门风格和自己擅长的开发语言差异比较大的,更有利于对编程语言的了解。

0.jpg

最后,圣诞节已经过了,祝大家元旦快乐。ps,你们要求写年终总结了么?

目录
相关文章
|
1天前
|
JavaScript 前端开发 安全
JavaScript函数详解
JavaScript函数的详细解析,包括函数的定义和调用方式(如一般格式、匿名函数、构造函数、自调用函数、箭头函数和严格模式)、函数参数(arguments对象、可变参数、默认参数值)、闭包的概念和应用实例。
JavaScript函数详解
|
3天前
|
Java
java基础(11)函数重载以及函数递归求和
Java支持函数重载,即在同一个类中可以声明多个同名方法,只要它们的参数类型和个数不同。函数重载与修饰符、返回值无关,但与参数的类型、个数、顺序有关。此外,文中还展示了如何使用递归方法`sum`来计算两个数之间的和,递归的终止条件是当第一个参数大于第二个参数时。
14 1
java基础(11)函数重载以及函数递归求和
|
3天前
|
JSON JavaScript 数据格式
手写JS实现深拷贝函数
本文介绍了如何实现一个深拷贝函数`deepClone`,该函数可以处理对象和数组的深拷贝,确保拷贝后的对象与原始对象在内存中互不干扰。通过递归处理对象的键值对和数组的元素,实现了深度复制,同时保留了函数类型的值和基础类型的值。
11 3
|
1天前
|
缓存 JavaScript 前端开发
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
该文章详细讲解了JavaScript中的作用域、闭包概念及其应用场景,并简要分析了函数柯里化的使用。
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
|
3天前
|
前端开发 数据可视化 开发者
D3.js 内置的动画函数
D3.js 内置的动画函数
|
4天前
|
JavaScript 前端开发
JavaScript 函数参数
JavaScript 函数参数
21 3
|
3天前
|
JavaScript 前端开发
js防抖函数返回值问题解决方案
本文介绍了如何在JavaScript中创建一个带有返回值的防抖函数,通过结合Promise来实现。这种防抖函数可以在事件触发一定时间后再执行函数,并能处理异步操作的返回值。文章提供了防抖函数的实现代码和如何在实际项目中使用该防抖函数的示例。
14 1
|
4天前
|
JavaScript 前端开发
JS 偏函数、函数柯里化~
该文章介绍了JavaScript中偏函数和函数柯里化的概念、实现方法和使用场景,通过代码示例展示了如何创建预设参数的函数以及如何将多参数函数转换成单参数函数的链式调用。
11 0
JS 偏函数、函数柯里化~
|
Java C# C语言
【.Net vs Java? 】 先来看一下Java和C#的数据类型区别。
新工作.Net和Java都要做,早期也做过一段Java的项目,但没有系统的深入学习过。一直觉得这两门语言估计是最相近的两门语言了,好多代码可以说直接拷过来都不带报错的,但仔细推敲还是有很多的不同。
202 0
【.Net vs Java? 】 先来看一下Java和C#的数据类型区别。