变量存在吗?
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 ?= b
与 a ||= 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)