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的更多相关文章

  1. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  2. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

  3. python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)

    一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...

  4. 初识IOS,Label控件的应用。

    初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...

  5. UI篇(初识君面)

    我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...

  6. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  7. 初识SpringMvc

    初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...

  8. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  9. Redis初识、设计思想与一些学习资源推荐

    一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...

随机推荐

  1. P1042 乒乓球

    题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华就是其中一位,他退役 ...

  2. listView onItemClick失效

    1.先检查list是否设置监听onItemClick事件 2.ListView中有按钮时,会使子项的onItemClick事件无效,如果onItemClick不能触发,在ListView子项目布局文件 ...

  3. css水平垂直居中的几个方法和技巧/居中之美

    水平居中设置-行内元素     我们在实际工作中常会遇到需要设置水平居中场景,今天我们就来看看怎么设置水平居中的. 如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-ali ...

  4. Android学习总结(十七) ———— Handler 的使用

    一.基本概念  handler通俗一点讲就是用来在各个线程之间发送数据的处理对象.在任何线程中,只要获得了另一个线程的handler,则可以通过  handler.sendMessage(messag ...

  5. CSS-学习笔记五

    1.  权重: 内联:A ID:B Class:C 标签:D 继承:0 2.  文字阴影text-shadow 3.  文字缩进text-index 4.  文本换行 5.  文本溢出 6.  圆角 ...

  6. 仿天猫淘宝的ShopNC好商城原生Android 客户端源码项目

    开发环境:Android Studio 2.0 | Gradle 2.0.0最后更新:2016-04-28 简介:基于好商城V4的Android客户端 目前已完成的功能(概述): 1.启动页 -> ...

  7. myna代码

    https://github.com/TalkingData/Myna/tree/master/Dataset https://github.com/TalkingData/Myna

  8. UEditor中多图上传的bug

    多图上传 预览:支持浏览器版本  IE8以上 在线管理:由于存在bug,显示不了 ueditor-1.1.1.jar解压后找到FileManager 1.修改com.baidu.ueditor.hun ...

  9. Clover KextsToPatch 使用方法 2015.10.21

    Clover KextsToPatch 使用方法 2015.10.21   前些天,因为 Thinkpad X230 BIOS 白名单限制,给她换了一块 ar9285 无线网卡,只是因为这块网卡正好可 ...

  10. Spring入门Ioc、DI笔记

    Spring是为解决企业应用程序开发复杂性而创建的一个Java开源框架.以下是本人学习过程中总结的一些笔记: 如何学习Spring - 掌握用法 - 深入理解 - 反复总结 - 再次深入理解和实践 s ...