初识LiveScript
The LiveScript Book
邂逅 LiveScript
就像很多现代化的语言一样,LiveScript 使用缩进来表示语句块,使用换行取代分号来表示一个语句的结束
(如果你想要一行多句你可以继续使用分号来进行断句)。
例如
1. if 2 + 2 == 4
2. do-something!
将会翻译为
1. if (2 + 2 == 4) {
2. doSomething();
3. }
你可以亲自使用 LiveScript 去将所有的例子转译成 JavaScript
为了简洁起见,你可以省略函数调用时所需的括号
1. add 2, 3
等价于 JavaScript 中的
1. add(2, 3);
现在注释变成这样了
1. #从行首到行尾
对于 Lisp 用户而言,你们将非常高兴看到可以在变量名和函数名中嵌入
-,这些变量将会被翻译成驼峰形式的名字
例如my-value = 2016等价于myValue = 2016
差点忘了,LiveScript 源码格式是
.ls
函数定义
在 LiveScript 中进行函数定义是非常地容易的
1.(x, y) -> x + y
2.
3.-> # 一个空函数
4.
5.times = (x, y) ->
6. x * y
正如你所看到的,函数定义是非常的简短的。你可能已经注意到了,我们省略了 return。
在 LiveScript 中,几乎一切皆表达式,函数体内的最后一句将被作为返回值进行返回。
如果你想要,你仍然可以使用return进行强制返回。你也可以在->前使用!取消自动返回值。no-ret。
= (x) !-> ...
赋值
基本的赋值操作正如你所想的那样,variable = value,变量的声明是没有必要的。但是,不像
CoffeeScript
如果你哟修改外层作用域内的变量,你得使用 :=。
1.x = 10
2.
3.do ->
4. x = 5
5.
6.do ->
7. x := 2
转译为 JavaScript
1.var x;
2.x = 10;
3.
4.(function() {
5. var x;
6. return x = 5;
7.})();
8.
9.(function() {
10. return x = 2;
11.})();
几乎一切都是表达式意味着你可以这么做
1.x = if 2 + 2 == 4
2. then 10
3. else 0
对应的 JavaScript 是这样的
1.var x;
2.x = 2 + 2 === 4 ? 10 : 0;
就像循环,switch语句,甚至是try/catch语句,统统都是表达式
你可以在 LiveScript 中使用关键字 const 来声明常量,
在编译时将会进行语法检查,但是编译成的 JavaScript 代码并没有什么区别。
1.const x = 10
2.x = 0
将会收到提示redeclaration of constant "x"at line 2 col 1。
但是对象并不会冻结即使你使用了const关键字,你依然可以修改它的属性和方法。如果你非得使得所有的变量变成常量,
那么你可以在编译时,添加-k或者-const参数。
初识LiveScript的更多相关文章
- Android动画效果之初识Property Animation(属性动画)
前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...
- 初识Hadoop
第一部分: 初识Hadoop 一. 谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...
- python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)
一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...
- 初识IOS,Label控件的应用。
初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...
- UI篇(初识君面)
我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
- 初识SpringMvc
初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...
- 初识redis数据类型
初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...
- Redis初识、设计思想与一些学习资源推荐
一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...
随机推荐
- 一张图告诉你,只会这些HTML还远远不够!!!!!
不知道自己HTML水平如何,不知道HTML5如何进化?看这张图 如果一半以上的你都不会,必须看这本书,阿里一线工程师用代码和功能页面来告诉你每一个技术点. 都会一点,但不知道如何检验自己,看看本书提供 ...
- vue+webpack+VS Code入门简单的项目配置
为了方便,这边的编译器选择的是VS Code (Visual Studio Code); 打开VS Code,选择好自己的工作空间,然后新建一个文件夹作为我们项目的文件夹,然后,show time: ...
- rxjava封装,RxBus封装(上线项目集成,声明周期管理,处理溢出内存,支持同时多个请求。)
Github地址 RxLibrary工程:1.rxjava2 + retrofit2的封装,常用的请求(Get,Post,文件上传,文件下载),防止内存泄漏,简单便捷,支持自定义loading等属性. ...
- Windows上SVN服务器搭建【转】
Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说.本文介绍Windows上 VisualSVN server 服务端和 TortoiseSVN客户端搭配使用: 现在S ...
- 申请Bing Search API
地址:https://datamarket.azure.com/home 没有帐号先注册一个,然后登录. 1:在数据中订阅Bing Search API,如果找不到就使用这个地址: https://d ...
- github上不了改下host
207.97.227.239 github.com 65.74.177.129 www.github.com 207.97.227.252 nodeload.github.com 207.97.227 ...
- C++实现动态数组
实现一个动态数组,要求对于随机访问可以在常数时间完成,可以通过push_back向数据的尾部追加元素,可以通过pop_back删除尾部元素,能够满足常见的数组操作. LINE 2016年春招笔试 ...
- 如何写好一个vue组件,老夫的一年经验全在这了【转】 v-bind="$attrs" 和 v-on="$listeners"
如何写好一个vue组件,老夫的一年经验全在这了 一个适用性良好的组件,一种是可配置项很多,另一种就是容易覆写,从而扩展功能 Vue 组件的 API 来自三部分——prop.事件和插槽: prop 允许 ...
- Linux之Nginx服务 nfs文件存储 负载均衡
一.搭建Nginx服务 Nginx 是俄罗斯人编写的十分轻量级的HTTP 服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个I ...
- syslog(),closelog()与openlog()--日志操作函数 (2)
文章出处:http://blog.chinaunix.net/uid-26583794-id-3166083.html 守护进程日志的实现 syslogd守护进程用于解决守护进程的日志记录问题,而日志 ...