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)

你可能感兴趣的:(coffee script 几个提高效率的小知识点)