美文网首页
coffee script 几个提高效率的小知识点

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

作者: john_ny | 来源:发表于2016-05-11 10:12 被阅读14次

    变量存在吗?

    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 几个提高效率的小知识点

          本文链接:https://www.haomeiwen.com/subject/urzyrttx.html