开发手册 欢迎您!
软件开发者资料库

CoffeeScript - 理解

CoffeeScript理解 - 从概述,环境,命令行实用程序,语法,数据类型,变量,运算符和别名,条件,循环,理解,函数,字符串,数组,对象,范围,Splat,日期,数学,异常处理开始学习CoffeeScript ,正则表达式,类和继承,Ajax,jQuery,MongoDB,SQLite。

在上一章中,我们学习了CoffeeScript提供的各种循环,及其变体.除此之外,CoffeeScript还提供了额外的循环结构,称为理解.

这些理解取代了其他编程语言中的 for 循环,如果我们显式添加可选的guard子句和当前数组索引的值.使用理解,我们可以迭代数组和对象,迭代数组的表达式是表达式,我们可以在函数中返回它们或分配给变量.

S.No.声明&描述
1for..in comprehensions

for..in 理解是CoffeeScript中基本的理解形式,使用它我们可以迭代列表或数组的元素.

2for..of comprehensions

就像Arrays CoffeeScriptScript提供了一个容器来存储称为对象的键值对.我们可以使用CoffeeScript提供的 for..of 理解来迭代对象.

3 list comprehensions  

CoffeeScript中的 list 理解用于将对象数组映射到另一个数组.

理解指数

元素的列表/数组具有可用于理解的索引.您可以使用如下所示的变量在理解中使用它.

  for student,i in [element1,element2,element3]

示例

以下示例演示了CoffeeScript中 for ... in 理解的索引用法.将此代码保存在名为 for_in_index.coffee

  for student的文件中,我在['Ram'中, 'Mohammed','John']  console.log"id为"+ i +"的学生姓名为:"+ student

打开命令提示符并编译.coffee文件,如下所示.

 c:\> coffee -c for_in_index.coffee

在编译时,它会为您提供以下JavaScript.

 //由CoffeeScript 1.10.0生成(function(){ var i,j,len,ref,student;  ref = ['Ram ','Mohammed','John'];  for(i = j = 0,len = ref.length; j< len; i = ++ j){ student = ref [i ];  console.log("id为"+ i +"的学生姓名为:"+ student"; } }).call(this);

现在,再次打开命令提示符并运行CoffeeScript文件,如下所示.

 c:\> coffee for_in_index.coffee

执行时,CoffeeScript文件会产生以下输出.

 身份0的学生姓名是:Ram 身份1的学生姓名是:Mohammed 身份2的学生姓名是:John

后缀形式的理解

就像postfix if 除非一样,CoffeeScript提供了理解的后缀形式,在编写代码时很方便.使用它,我们可以在一行中写出 for..in 理解,如下所示.

  #Postfix for..in comprehension  console.log学生为['Ram','Mohammed','John']学生 #postfix for..of comprehension  console. log key +"::"+ key的值,{name:"Mohammed"的值,年龄:24,电话:9848022338}


分配给变量

我们用来迭代数组的理解可以分配给一个变量,也由一个函数返回.

示例

考虑下面给出的例子.在这里,您可以观察到我们使用 for..in 理解检索了数组的元素,并将其分配给名为 names 的变量.我们还有一个函数,它使用 return 关键字显式返回一个理解.将此代码保存在名称为 example.coffee

  my_function =  - >的文件中 student = ['Ram','Mohammed','John']  #Acigning to a variable  names =(x for x in student) console.log"变量的内容是::"+名称 #Returning理解在学生控制台中返回x for x .log"函数返回的值是"+ my_function()

打开命令提示符并编译.coffee文件如下所示.

 c:\> coffee -c example.coffee

在编译时,它会为您提供以下JavaScript.

 //由CoffeeScript生成1.10.0 (function(){ var my_function;  my_function = function(){ var i, len,姓名,学生,x;  student = ['Ram','Mohammed','John'];  names =(function(){ var i,len,results;  results = [];  for(i = 0,len = student.length; i< len; i ++){x = student [i];  results.push (x); } 返回结果; })();  console.log("变量名称的内容是::"+名称);  for(i = 0,len = student.length; i< len; i ++){x = student [i];  return x; } };  console.log("函数返回的值是"+ my_function()); }).call(this);

现在,再次打开命令提示符并运行CoffeeScript文件,如下所示.

 c:\> coffee example.coffee

执行时,CoffeeScript文件产生以下输出.

 变量名称的内容是:: Ram,Mohammed,John 函数返回的值是Ram

keyword

CoffeeScript提供了定义元素列表的范围.例如,范围[1..10]相当于[1,2,3,4,5,6,7,8,9,10],其中每个元素都递增1.我们也可以改变这个增量使用理解的关键字.

示例

以下示例演示 by

  array =(num为[1]中的num .10] by 2) console.log数组

打开命令提示符并将.coffee文件编译为如下所示.

 c:\> coffee -c by_keyword_example.coffee

在编译时,它会为您提供以下JavaScript.

 //由CoffeeScript生成1.10.0 (function(){ var array,num;  array =(function(){ var i,results;  results = [];  for(num = i = 1; i< = 10; num = i + = 2){ results.push(num) ; } 返回结果; })();  console.log(数组); }).call(这个);

现在,再次打开命令提示符并运行CoffeeScript文件,如下所示.

 c:\> coffee by_keyword_example.coffee

执行时,CoffeeScript文件产生以下输出.

  [1,3,5,7,9]