coffeescript基本语法
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基本语法相关推荐
- CoffeeScript语法
本文译自The Little Book on CoffeeScript的第2章. ref:http://article.yeeyan.org/view/260164/251746 首先,在开始本章之前 ...
- 用typescript完成倒计时_「干货」将数十万行CoffeeScript代码迁移到TypeScript
作者 | David Goldstein 译者 | 王强 策划 | 小智 转发链接:https://mp.weixin.qq.com/s/TK7kWXX4hR3e-jtpVMuBnw 序言 2017 ...
- CoffeeScript快速入门
CoffeeScript快速入门 CoffeeScript是最近比较流行的一个小的编程语言,它有自己的语法(受Python和Ruby影响比较多,个人觉得更象Ruby),其编译器将其编译输出javasc ...
- coffeescript使用的方式汇总
Coffeescript作为Javascript低调的小弟实在是有过人之处,使用它可以增进开发效率,减少代码错误, 关键是能大幅提升开发愉悦感.我越来越觉得只要可能就在自己的项目中把coffee用起来 ...
- CoffeeScript 简介与安装步骤概览
CoffeeScript 简介与安装步骤概览 一.关于CoffeeScript CoffeeScript是一门新兴的构建在JavaScript之上的预处理器语言,经过编译可以生成高效的JavaScri ...
- [CoffeeScript]咖啡,入门
简介: 目前,大家对 CoffeeScript 狂热有加.CoffeeScript 是一种新的编程语言,构建于 JavaScript 之上.CoffeeScript 提供了一种简洁的语法,对 P ...
- Nodejs 4.0 ES6特性
简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.js 的包管理器 ...
- 初次接触vue,我是怎么学习的
又到了review的时候,话不多说,这次放出,最初的学习笔记. Vue 我将Vue看成了一门新得编程语言来学,基础的语法知识我认为就以下这些重点. 一.数据绑定语法 1.数据绑定最基础的形式是文本插值 ...
- 前端 DSL 实践指南
前言 近几年,前端社区中 DSL 这个词开始频繁出镜,这和环境的变化有很大关系: React.Vue.Angular 等现代框架的表现层设计往往和 DSL 有较强的关联,透过这些优秀作品我们可以得到一 ...
- 前端 DSL 实践指南(上)—— 内部 DSL
编者按:本文转载自云音乐前端技术团队,作者网易云音乐前端工程师郑海波 前言 近几年,前端社区中 DSL 这个词开始频繁出镜,这和环境的变化有很大关系: React.Vue.Angular 等现代框架的 ...
最新文章
- java.io.StreamCorruptedException: invalid stream header: EFBFBDEF 问题解决
- 一些实用的mysql语句(不断积累更新)
- SAP UI5 subscribe event实现原理
- Android 调用相册 拍照 实现系统控件缩放 切割图片
- nginx lua mysql 性能_深入浅出 nginx lua 为什么高性能
- @autowired注解注入为null_Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案
- Vue之父组件向子组件传递数据
- 腾讯或联姻优酷,微信嫁女模式引发互联网通婚潮流
- codesmith 如何把选中的多个表生成实体
- 每天一个小程序—0004题(统计单词出现次数)
- JetBrains GoLand 2018.3.5
- lambda java 接口_lambda – Java 8中的功能接口是什么“功能形状”?
- 《统计学基本概念和方法》读书笔记+读后感(1)
- 鸿蒙os framework,疯壳-鸿蒙OS-HDF驱动框架
- 【数学】高等数学中连续、可导、极限概念的随想
- spss数据分析_排序数据_计算变量
- 邮箱超大附件最大是多少?什么邮箱能发超大附件?
- android模拟器录制视频教程,畅玩安卓模拟器怎么录制视频?畅玩模拟器录制游戏视频图文教程...
- [CTO札记]新产品出现时,要‘耐得住寂寞,抗得住压力’
- 如何在NLP领域做成一件事by周明ACL计算语言学会候任主席(附PDF公号发“NLP做事”下载rar讲座PPT等10文件)
热门文章
- Markdown 插入目录索引、更改目录名称方法
- 计算机组成原理慕课网三四章测试题
- [经验] 我想加入阿里,我该怎么做
- 亲自用鸿蒙跑了个“hello world”!跑通后,我特么开始怀疑人生....
- 互联网行业定制网站需要多少钱
- 网络狂飙2(netspeeder2) v2.0 游戏版 怎么用
- 今日份PS练习|玻璃材质背景练习
- 带图片指示器的进度条
- VOLTE_SRVCC和ESRVCC
- (转)在 Linux 平台中调试 C/C++ 内存泄漏方法