快捷搜索:

【第722期】理解 JavaScript 的函数

虽然放假,但今天带来分享的是可译网@lison,@城府很深,@苏州小浮云联合翻译的。

正文从这开始~

函数(Function )这个词对程序猿来说并不陌生. 哪怕你每天只写一点点代码, 你也得在下班前把正在创建或者修改的函数给close掉.

简单来说函数就是一组执行某些动作的一堆程序语句. 一个函数可能有一些输入参数(在方法体内使用)并且执行完成之后返回一个值.

Java的函数也具有这些特点,不过他们可不止这些特点. 函数在Java里面是对象. Java里面几乎所有的东西都是对象,我在 《Java 对象》 这篇文章里提到过这些内容.

作为一个对象,Java的函数拥有属性和其他的函数(也就是方法)。让我们来看一个Java中典型的函数定义.

【第722期】理解 JavaScript 的函数

就是这样。上面的函数没有做太多的事,只是输出了一句欢迎访问者来到我的博客. 不过它已经演示了一个Java应该长什么样子. 定义一个函数是以关键字 function 开头,后面跟着函数名然后括号里加入0个或多个参数). 然后实际的函数代码(Java程序语句)包含在一对大括号里 { }. 函数可以有返回语句 return 这个语句是可选的. 不过函数都会返回一个值. 如果方法体中没有返回语句,那么方法会返回undefined(未定义).

【第722期】理解 JavaScript 的函数

下面的代码使用访问者姓名作为参数传递函数并调用它.

【第722期】理解 JavaScript 的函数

到这里,我们只是见识到了函数的基本特点. 接下来我们来近距离的观察下Java函数的高级特性.

匿名函数

一个 Java 函数可以是匿名的. 意思是说函数定义的时候你可以省略掉函数名. 不过,函数必须被存储在一个变量里,像下面这样.

【第722期】理解 JavaScript 的函数

上面的语法也称为函数表达式。你可以把变量addNumbers当作函数名然后按照如下方式调用该函数。

【第722期】理解 JavaScript 的函数

函数表达式会很方便当你想要将一个函数作为参数传递给另一个函数时。让我们试着用一个简单的例子来理解这个。

【第722期】理解 JavaScript 的函数

我首先创建了两个匿名函数。第一个返回两个数的和,第二个返回两个数的积。这相当的简单,没有什么值得骄傲的。接着,我定义了一个函数calculate,它的第一个参数是函数类型,后面两个参数是数值类型。

我可以通过传递任何函数作为第一个参数来调用函数calculate。

【第722期】理解 JavaScript 的函数

将函数通过参数形式传递是不是很简单. 这种方式在AJAX调用场景中被大量使用,比如你传入一个回调函数,当AJAX调用完成后用来处理成功或失败结果.

使用更多参数

Java 在处理传递或接收函数参数时非常灵活. 我们来看下操作”函数参数“的几种方式.

丢失的参数

调用一个函数可以传递比预期更多或更少的参数。如果你调用一个方法,少传递了一个参数,那么没传递的那个参数的值会被设为undefined.

【第722期】理解 JavaScript 的函数

参数对象

所有的Java函数都有一个特殊的对象 arguments 它是一个参数数组,在函数调用过程中被传递. 这个对象可以用来访问参数列表中的单独项,也可以获取参数传递至函数过程中的参数总个数.

【第722期】理解 JavaScript 的函数

这个函数假设没有参数传递进来,就像我说的,在Java函数调用中,你可以传递任意数量的参数. 因此我也可以这样调用方法:

【第722期】理解 JavaScript 的函数

所有的参数都可以在 arguments 对象数组中找到. 可以使用 arguments.length 属性获取传递参数的个数.

默认参数

你是 C++ 或者 C# 程序猿吗? 你见过有默认参数的函数吗? 可能见过! ECMA 6 把这个特性加入了Java,因此你就可以定义一个默认参数的函数.

【第722期】理解 JavaScript 的函数

您可能还会对下面的文章感兴趣: