變量存在嗎描焰?
c = false
if c?
console.log 'c existed'
if c
console.log 'c is true'
判斷是否該變量存在,需要使用a?這樣的方法栅螟,而不能使用a荆秦,因為當 a 為false的時候該變量存在,但boolean值為false力图。
引申的一種寫法是步绸,設(shè)默認值a ?= 'default value'
, 當a不存在的時候進行初始化。
# a = 'given value'
a = undefined
a ?= 'default value'
console.log a
變形 1 注意區(qū)別
要注意a ?= b
與 a ||= b
的區(qū)別吃媒,與上面情況描述的一樣靡努。
變形 2 吸收操作符
a?.fun
的含義是表示當 a 存在的時候坪圾,調(diào)用fun方法。如果a不存在惑朦,返回undefined
參數(shù)列分割數(shù)組的一種使用
birds = ['duck', 'duck', 'duck', 'goose']
[ducks..., goose] = birds
ducks # => duck, duck, duck
參數(shù)列展開的作為參數(shù)的一種用法
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的區(qū)別
for...in專注于在數(shù)組的使用兽泄,但for...of可以用在對象上。因為數(shù)組也是對象漾月,所以也可以使用病梢。但for...in可以加by,修改步進的幅度梁肿,如:
army = [1, 2, 3, 4]
console.log(soldier for soldier in army by 2)