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="

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

在coffeescript中可以这样:

html="""

my awesome html

"""

对象 

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

你可能感兴趣的:(JS)