Coffeescript 简明教程
CoffeeScript - Variables
变量只不过是已命名的容器。您可以将数据放入这些容器中,然后使用其容器的名称引用数据。
CoffeeScript Variables
在 JavaScript 中,在使用变量之前,我们需要声明并对其进行初始化(分配值)。与 JavaScript 不同,在 CoffeeScript 中创建变量时,不需要使用 var 关键字来声明它。正如您在下面看到的那样,我们只需给文字值赋值即可创建变量。
name = variable name
Example
在下面的 CoffeeScript 代码中,我们定义了两个变量 name 和 age ,其数据类型分别是字符串和数字。将其另存为名为 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 变量只有两个作用域。
-
Global Variables − 全局变量具有全局作用域,这意味着可以在您的 JavaScript 代码中的任何位置使用它。
-
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