在 CoffeeScript 中函数通过“->”符号来定义。以下是一个简单的函数:

hi = -> “Hello ,World!”

如果要定义一个带参数的函数,则可以这样定义:

greeting = (name) -> “Hello, #{name}!”

可见只要在’->’ 之前添加类是函数定义时的(arguments)就可以为函数提供参数,并且通过在字符串中使用 #{} 引用参数变量就可以了。

如果可能有大量参数需要传递,也可以使用 arguments 对象:

greeting = –> “Hello, #{arguments[0]}!”

Javascript 中的标准函数在 CoffeeScript 也同样是兼容的,比如 Math

cube = (num) –> Math.pow num,3

注意到函数运行时并不要求使用 () 将参数包围。

如果传递的参数并不符合逾期可以抛出异常以获取问题出现的原因。

odd = (num) ->

if typeof num is ‘number’

if num is Math.round num

if num > 0

num % 2 is 1

else

throw “#{num} is not positive”

else

throw “#{num} is not an integer”

else

throw “#{num} is not a number”

要获取到程序抛出的错误信息,直接运行函数是不行的,可以使用 try..catch 语句获取:

try

odd 5.1

catch e

console.log e

当然也可以通过使用 unless 重写 odd 函数:

odd = (num) ->

unless typeof num is ‘number’

throw “#{num} is not positive”

unless num is Math.round num

throw “#{num} is not an integer”

unless num > 0

throw “#{num} is not a number”

num % 2 is 1

如果觉得这样的格式还太长了,也可以使用类似 ruby 的语法,使用 throw A unless B 的格式编写这个函数。

函数中还可以修改变量、运行其他函数,javascript 中的函数能做到的 CoffeeScript 中的函数一样能够做到。

count = 0

anyfunc = -> count++

anyfunc()

console.log count  #now count is 1

函数声明

CoffeeScript的函数声明很有意思,函数通过一组可选的圆括号包裹的参数, 一个箭头, 一个函数体来定义的。就像下面这样:

#编译前

square = (x) ->

x * x

//编译后

var square;

square = function(x) {

return x * x;

};

函数体另起一行来写,千万别忘了缩进代码,因为CoffeeScript是用缩进来区分代码块的。如果你不缩进的话,就是这个样子的:

#编译前

square = (x) ->

x * x

//编译后

var square;

square = function(x) {};

x * x;

如果函数没有参数的话,如下:

#编译前

square = ->

x * x

#包括参数的括号可要可不要

square =() ->

x * x

//编译后

var square;

square = function() {

return x * x;

};

多个参数用逗号隔开:

#编译前

square = (x, y) ->

x * y

//编译后

var square;

square = function(x, y) {

return x * y;

};

一个立即执行的匿名函数可以这样写:

#编译前

(->)()

//编译后

(function() {})();

CoffeeScript在编译后的函数体体会给你最后的代码加上一个return,如果你不想要这个return值得话,可以显式的return一个值:

#编译前

square = (x, y) ->

x * y

return 0

//编译后

var square;

square = function(x, y) {

x * y;

return 0;

};

函数调用

函数的调用和JavaScript的调用方式一样:

#编译前

str = ->

return 'xxx'

str()

//编译后

var str;

str = function() {

return 'xxx';

};

str();

如果函数有参数的话,可以省掉括号不写。没有参数的话,括号必不可少!:

#编译前

square = (x, y) ->

x * y

square 2,4

//编译后

var square;

square = function(x, y) {

return x * y;

};

square(2, 4);

函数要先声明,后调用!

默认参数

一些函数函数参数会有默认值, 当传入的参数的不存在时会被使用。

#编译前

square = (x, y = 2) ->

x * y

square 3

//编译后

var square;

square = function(x, y) {

if (y == null) {

y = 2;

}

return x * y;

};

square(3);

如果有多个参数的话,必填参数在前,默认参数在后!大家想想为啥?

变参

JavaScript函数里可以使用arguments类数组对象获取不定参数。CoffeeScript在函数定义和调用里提供了变参的语法, 让不定个数的参数使用起来更愉悦一些。废话不多说,看例子:

#编译前

square = (x, y, z...) ->

#todo

square 1,2,3,4,5

//编译后

var square,

__slice = [].slice;

square = function() {

var x, y, z;

x = arguments[0], y = arguments[1], z = 3 <= arguments.length ? __slice.call(arguments, 2) : [];

};

square(1, 2, 3, 4, 5);

变参一定要放到最后,看编译后的代码,第一个参数赋值给了x,第二个参数赋值给了y,剩余的参数被封装成一个数组给了z。实际上变参接受的是多余参数的数组集合。

coffeescript html5,CoffeeScript函数相关推荐

  1. coffeescript html5,HTML5——前端预处理技术(Less、Sass、CoffeeScript)

    一.Less 1.1.概要 Less是一种动态样式语言,Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展. Less 将 C ...

  2. html5 setdata函数,微信小程序this.setData is not a function错误解决

    开发中遇到微信小程序"this.setData is not a function"错误,具体错误内容如下所示: VM10092:1 thirdScriptError this.s ...

  3. html5 函数大全,5 个强大的HTML5 API 函数推荐

    HTML5提供了一些非常强大的JavaScript和HTML API,来帮助开发者构建精彩的桌面和移动应用程序.本文将介绍5个新型的API,希望对你的开发工作有所帮助. 1.  全屏API(Fulls ...

  4. column函数HTML5,column函数 excel中column函数的使用方法

    column函数是一种查询的工具,我相信许多人都不会使用到这一个函数,因此在实际工程当中并不是十分的常见,然而这一款韩束如果能够掌握,对我们的工作也是非常有帮助的,接下来我们就一起来好好的了解一下这个 ...

  5. html5降龙十八掌-函数,对象,数组的练习

    <script>     function x1(){ var gj={};         gj.name="侯伟东";         gj.hp=500;    ...

  6. CoffeeScript入门

    官网文档传送门 CoffeeScript简介 CoffeeScript 是一门编译到 JavaScript 的小巧语言. 在 Java 般笨拙的外表下, JavaScript 其实有着一颗华丽的心脏. ...

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

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

  8. [CoffeeScript]咖啡,入门

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

  9. JavaScript新发展 CoffeeScript Dart Rust Node.js

    CoffeeScript http://coffeescript.org/ CoffeeScript (GitHub repo) 是一个使用纯Ruby编写的新编程语言,创建者 Jeremy Ashke ...

  10. CoffeeScript中的三元操作

    本文翻译自:Ternary operation in CoffeeScript I need to set value to a that depends on a condition. 我需要设置值 ...

最新文章

  1. Linux运维工程师必备技能
  2. 80x86描述符总结及解析描述符的小程序
  3. QT的QStack类的使用
  4. 锐捷亮相GITC:请互联网企业为我点个赞!
  5. 笨办法学 Python · 续 练习 22:后缀数组
  6. 域名解析中的cname解析和显性URL跳转和隐性URL跳转三者有什么区别
  7. SQL查询分析器SQL语句导入TXT文件
  8. DES算法理解--附《密码编码学与网络安全(第七版)》课后练习题答案
  9. 用Python BeautifulSoup写的一份多线程图片抓取的脚本
  10. android判断通知铃声是否静音模式
  11. 关于Ultraiso一直显示“设备忙”的解决办法
  12. CSS3 Tranform详解
  13. Apple M1芯片版Mac系统重装教程
  14. 成功的交易者有什么好的方法去做期货交易
  15. 腾达F6路由器无线中继功能设置
  16. 使用python计算夏普比率与最大回撤和最大回撤时间的程序
  17. Spring容器的启动流程
  18. 什么是股票分仓软件, 实现原理解析1
  19. Web前端,JS基础之ATM取款机案例
  20. 钗头凤——为IT诗人代腾飞而作 (转)

热门文章

  1. 网易云豆瓣数据分析——爬虫(结尾附代码
  2. Hadoop 安装指南
  3. <C++>初识STL —— 标准模板库
  4. 《鹊桥仙·纤云弄巧》 秦观
  5. 各种光纤接口类型介绍
  6. (转)安装完Fedora 18后需要做的事情
  7. miui修改Android,修改 MIUI「快捷开关」布局
  8. 安装软件出现提示:无法将数值写入键
  9. 带图标显示的ls---lsd
  10. 胃不好吃什么养胃 三九胃泰提示常吃芝麻更护胃