coffee script 几个提高效率的小知识点

变量存在吗?

c = false
if c?
  console.log 'c existed'
if c
  console.log 'c is true'

判断是否该变量存在,需要使用a?这样的方法,而不能使用a,因为当 a 为false的时候该变量存在,但boolean值为false。

引申的一种写法是,设默认值a ?= 'default value', 当a不存在的时候进行初始化。

# a = 'given value'
a = undefined
a ?= 'default value'
console.log a

变形 1 注意区别

要注意a ?= ba ||= b的区别,与上面情况描述的一样。

变形 2 吸收操作符

a?.fun的含义是表示当 a 存在的时候,调用fun方法。如果a不存在,返回undefined

参数列分割数组的一种使用

birds = ['duck', 'duck', 'duck', 'goose']
[ducks..., goose] = birds
ducks # => duck, duck, duck

参数列展开的作为参数的一种用法

console.log 1, 2, 3, 4 # 1 2 3 4
arr = [1, 2, 3]
console.log arr, 4 # [1, 2, 3] 4
console.log arr..., 4 # 1 2 3 4

同名键值对

当一个对象key与value同名的时候可以使用简写

name = 'johnny'
johnny = {name: name} # 普通定义方式
johnny = {name} # 简写方式

集合过滤

for i in arr
  if i % 2 == 0
    # do something

可以使用when简化这种写法

for i in art when i % 2 == 0
  # do something

for...in 与for...of的区别

for...in专注于在数组的使用,但for...of可以用在对象上。因为数组也是对象,所以也可以使用。但for...in可以加by,修改步进的幅度,如:

army = [1, 2, 3, 4]
console.log(soldier for soldier in army by 2)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,306评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,896评论 18 399
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,706评论 0 17
  • 90天目标: 1、英语口语练习 2、践行正面管教 3、瘦肚子 本周检视:纠结于个人发展和孩子换幼儿园,有时想着就陷...
    宝兰儿阅读 929评论 0 1
  • 那么安静,我是说天空 一粒星子,先于声音 落在我的手背,光暗淡 相约尘埃,相约 迎面碰撞和背转的脚步 别说读不懂,...
    合肥张建春阅读 1,657评论 1 3