Coffeescript 简明教程

CoffeeScript - Syntax

  • * *在上一个章节中,我们已经看到了如何安装CoffeeScript。在本章中,让我们了解CoffeeScript的语法。

  • * *与JavaScript的语法相比,CoffeeScript的语法更优雅。它避免了像花括号、分号和变量减速这样的麻烦特性。

CoffeeScript Statements

  • * *与C、C++和Java等许多其他编程语言不同,CoffeeScript中的语句并不以分号 (;) 结尾。相反,CoffeeScript编译器将每一行都视为一个单独的语句。

Example

  • * *这里有一个CoffeeScript语句的例子。

name = "Javed"
age = 26
  • * *以同样的方式,我们可以使用分号将两条语句写在单行中,如下所示。

name = "Javed";age = 26

CoffeeScript Variables (No var Keyword)

  • * 在JavaScript中,我们使用 *var 关键字在创建变量之前声明变量,如下所示。

var name = "Javed"
var age = 20
  • * 在CoffeeScript中创建变量时,不需要使用 *var 关键字来声明变量。我们只需通过给它赋值来直接创建变量,如下所示。

name = "Javed"
age = 20

No Parentheses

  • * 通常,我们在声明函数、调用函数以及分隔代码块时使用括号以避免歧义。在CoffeeScript中,不需要使用括号,而在创建函数时,我们使用箭头标记 ( *→ ) 代替括号,如下所示。

myfunction = -> alert "Hello"
  • * *不过,在某些情况下,我们仍然必须使用括号。在调用没有参数的函数时,我们将使用括号。例如,如果我们在CoffeeScript中有一个名为my_function的函数,那么我们必须按照如下所示调用它。

my_function()
  • * *以同样的方式,我们也可以使用括号来分隔模棱两可的代码。如果你观察以下示例,没有大括号,结果是2233,有括号,结果是45。

alert "The result is  "+(22+33)

No Curly Braces

  • * *在JavaScript中,对于诸如函数、循环和条件语句之类的块代码,我们使用大括号。在CoffeeScript中,不需要使用大括号。相反,我们必须在正文中保持适当的缩进(空格)。这是受Python语言启发的特性。

  • * *以下是一个CoffeeScript函数的示例。在这里你可以观察到,我们使用了三个空格作为缩进来分隔函数的主体,而不是大括号。

myfunction = ->
   name = "John"
   alert "Hello"+name

CoffeeScript Comments

  • * *在任何编程语言中,我们使用注释来编写我们编写的代码的描述。这些注释不被认为是程序的一部分。CoffeeScript中的注释类似于Ruby语言的注释。CoffeeScript提供了两种类型的注释,如下所述 −

Single-line Comments

当我们希望在 CoffeeScript 中注释某一行时,我们只需要在它之前放置一个井号标记,如下所示。

# This is the single line comment in CoffeeScript

在 CoffeeScript 编译器中,每个单行标记后 ( # ) 的行都被视为注释,它将编译给定文件中未注释的其余代码。

Multiline Comments

当我们希望在 CoffeeScript 中注释多行(多行)时,我们可以通过将这些行包裹在对三重井号标记中来实现,如下所示。

###
These are the multi line comments in CoffeeScript
We can write as many number of lines as we want
within the pair of triple hash tags.
###

CoffeeScript Reserved keywords

CoffeeScript 中所有保留字的列表在下表中给出。它们不能用作 CoffeeScript 变量、函数、方法、循环标签或任何对象名称。

case default function var void with const let enum export import native _hasProp _extends _slice _bind __indexOf implements

else interface package private protected public static yield true false null this new delete typeof in arguments eval

instanceof return throw break continue debugger if else switch for while do try catch finally class extends super

undefined then unless until loop of by when and or is isnt not yes no on off