Coffeescript 简明教程

CoffeeScript - Variables

变量只不过是已命名的容器。您可以将数据放入这些容器中,然后使用其容器的名称引用数据。

CoffeeScript Variables

在 JavaScript 中,在使用变量之前,我们需要声明并对其进行初始化(分配值)。与 JavaScript 不同,在 CoffeeScript 中创建变量时,不需要使用 var 关键字来声明它。正如您在下面看到的那样,我们只需给文字值赋值即可创建变量。

name = variable name

Example

在下面的 CoffeeScript 代码中,我们定义了两个变量 nameage ,其数据类型分别是字符串和数字。将其另存为名为 variable_example.coffee 的文件。

name = "Javed"
age = 25

Compiling the code

通过在命令提示符中执行以下命令来编译上述 CoffeeScript 代码。

c:\> compile -c variable_example.coffee

编译后,将生成一个名为 variable_example.js 的 JavaScript 文件,内容如下。在这里,您可以观察到编译器使用 var 关键字替我们声明了变量(age 和 name)。

// Generated by CoffeeScript 1.10.0
(function() {
  var age, name;
  name = "Javed";
  age = 25;

}).call(this);

Variable Scope

变量的作用域是指程序中定义它的区域。JavaScript 和 CoffeeScript 变量只有两个作用域。

  1. Global Variables − 全局变量具有全局作用域,这意味着可以在您的 JavaScript 代码中的任何位置使用它。

  2. Local Variables − 局部变量只会在其被定义的函数中可见。函数参数始终局部于该函数。

The Problem with Variables in JavaScript

在 JavaScript 中,每当我们在不使用 var 关键字的情况下定义变量时,它就会以全局作用域创建。这会导致许多问题。请考虑以下示例 −

<script type = "text/javascript">
   var i = 10;
   document.write("The value of global variable i is "+ i);
   document.write("<br>");
   test();
   function test() {
      i = 20;
      document.write("The value of local variable i is "+i);
      document.write("<br>");
   }
   document.write("The value of global variable i is "+i);
</script>

执行时,上面这段 JavaScript 代码会给您以下输出 −

The value of global variable i is 10

The value of local variable i is 20

The value of global variable i is 20

在上面的示例中,我们在全局空间中创建了一个名为 i 的变量,并为其分配了值 10。而在函数中,在尝试创建一个同名局部变量时,我们声明为 i=20; 不带 var 关键字。因为我们错过了 var 关键字,全局变量 i 的值被重新赋值为 20。

出于这个原因,建议使用 var 关键字声明变量。

Variable Scope in CoffeeScript

每当我们编译 CoffeeScript 文件时,CoffeeScript 编译器都会创建一个匿名函数,并在该函数中,它将 CoffeeScript 代码逐行反编译成 JavaScript。(如果我们愿意,可以使用编译命令的 -b--bare 选项删除顶层函数包装。) 我们创建的每个变量都在匿名函数中使用 var 关键字声明,因此,默认情况下,CoffeeScript 中的每个变量都是局部变量。

(function() {
  var age, name;
  name = "javed";
  age = 20;
}).call(this);

无论如何,如果我们愿意,我们可以声明一个具有全局名称空间的变量。我们可以像下面显示的那样显式地进行此操作。

obj = this
obj.age = 30

CoffeeScript Variable Names (Literals)

在 CoffeeScript 中为变量命名时,请记住以下规则。

  1. 您不应将任何 CoffeeScript 保留关键字用作变量名称。这些关键字将在下一部分中提及。例如,break 或 Boolean 变量名称无效。

  2. CoffeeScript 变量名称不应以数字 (0-9) 开头。它们必须以字母或下划线字符开头。例如,123test 是一个无效变量名称,但 _123test 是一个有效变量名称。

  3. CoffeeScript 变量名区分大小写。例如, Namename 是两个不同的变量。