- CoffeeScript 教程
- CoffeeScript - 首页
- CoffeeScript - 概述
- CoffeeScript - 环境
- CoffeeScript - 命令行工具
- CoffeeScript - 语法
- CoffeeScript - 数据类型
- CoffeeScript - 变量
- CoffeeScript - 运算符和别名
- CoffeeScript - 条件语句
- CoffeeScript - 循环
- CoffeeScript - 推导式
- CoffeeScript - 函数
- CoffeeScript 面向对象
- CoffeeScript - 字符串
- CoffeeScript - 数组
- CoffeeScript - 对象
- CoffeeScript - 范围
- CoffeeScript - 展开运算符
- CoffeeScript - 日期
- CoffeeScript - 数学
- CoffeeScript - 异常处理
- CoffeeScript - 正则表达式
- CoffeeScript - 类和继承
- CoffeeScript 高级
- CoffeeScript - Ajax
- CoffeeScript - jQuery
- CoffeeScript - MongoDB
- CoffeeScript - SQLite
- CoffeeScript 有用资源
- CoffeeScript - 快速指南
- CoffeeScript - 有用资源
- CoffeeScript - 讨论
CoffeeScript - 函数
函数是一块可重用的代码块,可以在程序的任何地方调用。这避免了重复编写相同代码的需要。它有助于程序员编写模块化代码。
函数允许程序员将一个大型程序分解成许多小的、易于管理的函数。
通常,使用 JavaScript,我们可以定义两种类型的函数 - **命名函数**,即带有函数名和函数体的常规函数,以及 **函数表达式**。使用函数表达式,我们可以将函数赋值给变量。
//named function function sayHello(){ return("Hello there"); } //function expressions var message = function sayHello(){ return("Hello there"); }
CoffeeScript 中的函数
CoffeeScript 中的函数语法比 JavaScript 更简单。在 CoffeeScript 中,我们只定义函数表达式。
CoffeeScript 中省略了 **function** 关键字。要在此处定义函数,我们必须使用细箭头 (**->**)。
在幕后,CoffeeScript 编译器将箭头转换为 JavaScript 中的函数定义,如下所示。
(function() {});
在 CoffeeScript 中,使用 **return** 关键字不是强制性的。CoffeeScript 中的每个函数都会自动返回函数中的最后一个语句。
如果我们想返回到调用函数或在到达函数末尾之前返回一个值,则可以使用 **return** 关键字。
除了内联函数(单行函数)之外,我们还可以在 CoffeeScript 中定义多行函数。由于省略了花括号,我们可以通过保持正确的缩进来实现。
定义函数
以下是 CoffeeScript 中定义函数的语法。
function_name = -> function_body
示例
下面是一个 CoffeeScript 函数的示例。在这里,我们创建了一个名为 **greet** 的函数。此函数自动返回其中的语句。将其保存在名为 **function_example.coffee** 的文件中。
greet = -> "This is an example of a function"
通过在命令提示符中执行以下命令来编译它。
c:\>coffee -c function_example.coffee
编译后,它生成以下 JavaScript 代码。在这里,您可以观察到 CoffeeScript 编译器自动返回名为 **greet()** 的函数中的字符串值。
// Generated by CoffeeScript 1.10.0 (function() { var greet; greet = function() { return "This is an example of a function"; }; }).call(this);
多行函数
我们还可以通过保持缩进而不是花括号来定义具有多行的函数。但是,我们必须对整个函数中的一行的缩进保持一致。
greet = -> console.log "Hello how are you"
编译后,上述 CoffeeScript 会生成以下 JavaScript 代码。CoffeeScript 编译器会获取我们使用缩进分隔的函数体,并将其放在花括号内。
// Generated by CoffeeScript 1.10.0 (function() { var greet; greet = function() { return console.log("Hello how are you"); }; }).call(this);
带参数的函数
我们还可以使用括号指定函数中的参数,如下所示。
add =(a,b) -> c=a+b console.log "Sum of the two numbers is: "+c
编译上述 CoffeeScript 文件后,它将生成以下 JavaScript 代码。
// Generated by CoffeeScript 1.10.0 (function() { var add; add = function(a, b) { var c; c = a + b; return console.log("Sum of the two numbers is: " + c); }; }).call(this);
调用函数
定义函数后,我们需要调用该函数。您可以简单地通过在函数名后添加括号来调用函数,如下例所示。
add = -> a=20;b=30 c=a+b console.log "Sum of the two numbers is: "+c add()
编译后,上述示例会生成以下 JavaScript 代码
// Generated by CoffeeScript 1.10.0 (function() { var add; add = function() { var a, b, c; a = 20; b = 30; c = a + b; return console.log("Sum of the two numbers is: " + c); }; add(); }).call(this);
执行上述 CoffeeScript 代码后,它会生成以下输出。
Sum of the two numbers is: 50
调用带参数的函数
同样,我们可以通过向函数传递参数来调用函数,如下所示。
my_function argument_1,argument_2 or my_function (argument_1,argument_2)
**注意** - 在通过传递参数来调用函数时,括号的使用是可选的。
在以下示例中,我们创建了一个名为 **add()** 的函数,它接受两个参数,并且我们已经调用了它。
add =(a,b) -> c=a+b console.log "Sum of the two numbers is: "+c add 10,20
编译后,上述示例会生成以下 JavaScript 代码。
// Generated by CoffeeScript 1.10.0 (function() { var add; add = function(a, b) { var c; c = a + b; return console.log("Sum of the two numbers is: " + c); }; add(10, 20); }).call(this);
执行上述 CoffeeScript 代码后,它会生成以下输出。
Sum of the two numbers is: 30
默认参数
CoffeeScript 也支持默认参数。我们可以为函数的参数分配默认值,如下例所示。
add =(a = 1, b = 2) -> c=a+b console.log "Sum of the two numbers is: "+c add 10,20 #Calling the function with default arguments add()
编译后,上述 CoffeeScript 会生成以下 JavaScript 文件。
// Generated by CoffeeScript 1.10.0 (function() { var add; add = function(a, b) { var c; if (a == null) { a = 1; } if (b == null) { b = 2; } c = a + b; return console.log("Sum of the two numbers is: " + c); }; add(10, 20); add() }).call(this);
执行上述 CoffeeScript 代码后,它会生成以下输出。
Sum of the two numbers is: 30 Sum of the two numbers is: 3