CoffeeScript - 变量



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

CoffeeScript 变量

在 JavaScript 中,使用变量之前,需要声明并初始化它(赋值)。与 JavaScript 不同,在 CoffeeScript 中创建变量时,无需使用var关键字声明它。我们只需为字面量赋值即可创建变量,如下所示。

name = variable name

示例

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

name = "Javed"
age = 25

编译代码

在命令提示符中执行以下命令,编译上述 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);

变量作用域

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

  • 全局变量 - 全局变量具有全局作用域,这意味着它可以在 JavaScript 代码中的任何地方使用。

  • 局部变量 - 局部变量仅在其定义的函数内可见。函数参数始终是该函数的局部变量。

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关键字声明变量。

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 变量名(字面量)

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

  • 您不应使用任何 CoffeeScript 保留关键字作为变量名。这些关键字在下一节中提到。例如,break 或 Boolean 变量名无效。

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

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

广告