coffeescript是javascript的预编译器,coffeescript是javascript上面的一层,必须通过编译输出成javascript。

coffeescript有如下优点:

避免常见的语法错误

给编程语言加入一些非原生的功能

改进代码语法与可读性

利用预编译器中包含的最优代码编写方法

相比之下javascript具有如下相对的短板:

分号到处都是,忘记他们就会引入错误

必须一遍又一遍的声明function关键字

结尾的逗号会引入许多意想不到的问题

javascript中的变量作用域容易搞混

为了克服以上的短板,coffeescript引入了如下语法特点:

coffeescript不需要分号

不需要使用var声明变量,由 ”=“  指派

不需要function关键字,函数通过使用 “->”将参数指向结果来声明

不需要花括号,coffeescript中使用空格,通过缩进来推导出花括号,缩进的代码就等同于{}

不需要return 函数的最后一行自动返回

不需要括号来包裹参数,函数后面的任何东西都作为参数

例如:

cube=(x) -> x*x*x

上面的代码等同于:

function cube(x){

return x*x*x;

}

条件和比较:

coffeescript引入了许多的关键字来增强条件和比较,使得更容易阅读和理解代码,代码更简明,更容易维护

coffeescript  javascript

is ===

isnt !==

not !

and &&

or ||

true,yes,on true

false,no,off false

@,this this

of in

in

coffeescript也增强了一些字符串的功能,从而使的字符串的处理更为简单

例如:

beer = "world"

sing="hello #{beer}"

coffeescript 也支持Heredocs风格的字符串声明

在javascript中:

var html="<p>\n my awesome html \n <\p>";

在coffeescript中可以这样:

html="""

<p>

my awesome html

</p>

"""

对象

coffeescript支持通过YAML风格的语法创建对象

在javascript中,对象的写法如下:

var kids={

brother:{

name:"brother",

age:10

}

sister:{

name:"sister",

age:11

}

}

在coffeescript中,用如下的方式创建:

kids=

brother:

name:"brother"

age:10

sister:

name:"sister"

age:11

类,继承和super

javascript中原型继承让人痛苦,coffeescript提供一种更为友好的声明类的方式

声明一个类,使用如下的方法:

class Car

constructor: (@name)->

speed:100

coffeescript的继承同样很友好

class FaseCar extends Car

在继承的子类中我们可以使用super关键字

class Robot

run: ->

console.log("robot is running")

class SmartRobot extends Robot

run:->

console.log("I dont't like running")

super

coffeescript基本语法相关推荐

  1. CoffeeScript语法

    本文译自The Little Book on CoffeeScript的第2章. ref:http://article.yeeyan.org/view/260164/251746 首先,在开始本章之前 ...

  2. 用typescript完成倒计时_「干货」将数十万行CoffeeScript代码迁移到TypeScript

    作者 | David Goldstein 译者 | 王强 策划 | 小智 转发链接:https://mp.weixin.qq.com/s/TK7kWXX4hR3e-jtpVMuBnw 序言 2017 ...

  3. CoffeeScript快速入门

    CoffeeScript快速入门 CoffeeScript是最近比较流行的一个小的编程语言,它有自己的语法(受Python和Ruby影响比较多,个人觉得更象Ruby),其编译器将其编译输出javasc ...

  4. coffeescript使用的方式汇总

    Coffeescript作为Javascript低调的小弟实在是有过人之处,使用它可以增进开发效率,减少代码错误, 关键是能大幅提升开发愉悦感.我越来越觉得只要可能就在自己的项目中把coffee用起来 ...

  5. CoffeeScript 简介与安装步骤概览

    CoffeeScript 简介与安装步骤概览 一.关于CoffeeScript CoffeeScript是一门新兴的构建在JavaScript之上的预处理器语言,经过编译可以生成高效的JavaScri ...

  6. [CoffeeScript]咖啡,入门

     简介: 目前,大家对 CoffeeScript 狂热有加.CoffeeScript 是一种新的编程语言,构建于 JavaScript 之上.CoffeeScript 提供了一种简洁的语法,对 P ...

  7. Nodejs 4.0 ES6特性

    简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.js 的包管理器 ...

  8. 初次接触vue,我是怎么学习的

    又到了review的时候,话不多说,这次放出,最初的学习笔记. Vue 我将Vue看成了一门新得编程语言来学,基础的语法知识我认为就以下这些重点. 一.数据绑定语法 1.数据绑定最基础的形式是文本插值 ...

  9. 前端 DSL 实践指南

    前言 近几年,前端社区中 DSL 这个词开始频繁出镜,这和环境的变化有很大关系: React.Vue.Angular 等现代框架的表现层设计往往和 DSL 有较强的关联,透过这些优秀作品我们可以得到一 ...

  10. 前端 DSL 实践指南(上)—— 内部 DSL

    编者按:本文转载自云音乐前端技术团队,作者网易云音乐前端工程师郑海波 前言 近几年,前端社区中 DSL 这个词开始频繁出镜,这和环境的变化有很大关系: React.Vue.Angular 等现代框架的 ...

最新文章

  1. java.io.StreamCorruptedException: invalid stream header: EFBFBDEF 问题解决
  2. 一些实用的mysql语句(不断积累更新)
  3. SAP UI5 subscribe event实现原理
  4. Android 调用相册 拍照 实现系统控件缩放 切割图片
  5. nginx lua mysql 性能_深入浅出 nginx lua 为什么高性能
  6. @autowired注解注入为null_Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案
  7. Vue之父组件向子组件传递数据
  8. 腾讯或联姻优酷,微信嫁女模式引发互联网通婚潮流
  9. codesmith 如何把选中的多个表生成实体
  10. 每天一个小程序—0004题(统计单词出现次数)
  11. JetBrains GoLand 2018.3.5
  12. lambda java 接口_lambda – Java 8中的功能接口是什么“功能形状”?
  13. 《统计学基本概念和方法》读书笔记+读后感(1)
  14. 鸿蒙os framework,疯壳-鸿蒙OS-HDF驱动框架
  15. 【数学】高等数学中连续、可导、极限概念的随想
  16. spss数据分析_排序数据_计算变量
  17. 邮箱超大附件最大是多少?什么邮箱能发超大附件?
  18. android模拟器录制视频教程,畅玩安卓模拟器怎么录制视频?畅玩模拟器录制游戏视频图文教程...
  19. [CTO札记]新产品出现时,要‘耐得住寂寞,抗得住压力’
  20. 如何在NLP领域做成一件事by周明ACL计算语言学会候任主席(附PDF公号发“NLP做事”下载rar讲座PPT等10文件)

热门文章

  1. Markdown 插入目录索引、更改目录名称方法
  2. 计算机组成原理慕课网三四章测试题
  3. [经验] 我想加入阿里,我该怎么做
  4. 亲自用鸿蒙跑了个“hello world”!跑通后,我特么开始怀疑人生....
  5. 互联网行业定制网站需要多少钱
  6. 网络狂飙2(netspeeder2) v2.0 游戏版 怎么用
  7. 今日份PS练习|玻璃材质背景练习
  8. 带图片指示器的进度条
  9. VOLTE_SRVCC和ESRVCC
  10. (转)在 Linux 平台中调试 C/C++ 内存泄漏方法