coffeescript html5,CoffeeScript函数
在 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函数相关推荐
- coffeescript html5,HTML5——前端预处理技术(Less、Sass、CoffeeScript)
一.Less 1.1.概要 Less是一种动态样式语言,Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展. Less 将 C ...
- html5 setdata函数,微信小程序this.setData is not a function错误解决
开发中遇到微信小程序"this.setData is not a function"错误,具体错误内容如下所示: VM10092:1 thirdScriptError this.s ...
- html5 函数大全,5 个强大的HTML5 API 函数推荐
HTML5提供了一些非常强大的JavaScript和HTML API,来帮助开发者构建精彩的桌面和移动应用程序.本文将介绍5个新型的API,希望对你的开发工作有所帮助. 1. 全屏API(Fulls ...
- column函数HTML5,column函数 excel中column函数的使用方法
column函数是一种查询的工具,我相信许多人都不会使用到这一个函数,因此在实际工程当中并不是十分的常见,然而这一款韩束如果能够掌握,对我们的工作也是非常有帮助的,接下来我们就一起来好好的了解一下这个 ...
- html5降龙十八掌-函数,对象,数组的练习
<script> function x1(){ var gj={}; gj.name="侯伟东"; gj.hp=500; ...
- CoffeeScript入门
官网文档传送门 CoffeeScript简介 CoffeeScript 是一门编译到 JavaScript 的小巧语言. 在 Java 般笨拙的外表下, JavaScript 其实有着一颗华丽的心脏. ...
- CoffeeScript 简介与安装步骤概览
CoffeeScript 简介与安装步骤概览 一.关于CoffeeScript CoffeeScript是一门新兴的构建在JavaScript之上的预处理器语言,经过编译可以生成高效的JavaScri ...
- [CoffeeScript]咖啡,入门
简介: 目前,大家对 CoffeeScript 狂热有加.CoffeeScript 是一种新的编程语言,构建于 JavaScript 之上.CoffeeScript 提供了一种简洁的语法,对 P ...
- JavaScript新发展 CoffeeScript Dart Rust Node.js
CoffeeScript http://coffeescript.org/ CoffeeScript (GitHub repo) 是一个使用纯Ruby编写的新编程语言,创建者 Jeremy Ashke ...
- CoffeeScript中的三元操作
本文翻译自:Ternary operation in CoffeeScript I need to set value to a that depends on a condition. 我需要设置值 ...
最新文章
- Linux运维工程师必备技能
- 80x86描述符总结及解析描述符的小程序
- QT的QStack类的使用
- 锐捷亮相GITC:请互联网企业为我点个赞!
- 笨办法学 Python · 续 练习 22:后缀数组
- 域名解析中的cname解析和显性URL跳转和隐性URL跳转三者有什么区别
- SQL查询分析器SQL语句导入TXT文件
- DES算法理解--附《密码编码学与网络安全(第七版)》课后练习题答案
- 用Python BeautifulSoup写的一份多线程图片抓取的脚本
- android判断通知铃声是否静音模式
- 关于Ultraiso一直显示“设备忙”的解决办法
- CSS3 Tranform详解
- Apple M1芯片版Mac系统重装教程
- 成功的交易者有什么好的方法去做期货交易
- 腾达F6路由器无线中继功能设置
- 使用python计算夏普比率与最大回撤和最大回撤时间的程序
- Spring容器的启动流程
- 什么是股票分仓软件, 实现原理解析1
- Web前端,JS基础之ATM取款机案例
- 钗头凤——为IT诗人代腾飞而作 (转)