js ES6 中感嘆號和三個點擴充套件運算子

2021-09-06 15:40:57 字數 1470 閱讀 3302

乙個感嘆號(!)最好理解,也是我們經常使用的。!可以將變數轉為boolean值,所有的truthy和falsy都可以被轉化,比如null、undefined、數字0和空字串取反都為true,其餘都為false。

!

null

=true

!undefined =

true!""

=true!0

=true

!100

=false

!"asdss"

=false

注意:truthy和falsy不是true和false

兩個感嘆號(!!),學習時比較少見到,通常用來判斷變數是不是truthy或者falsy,這麼說好像和前面一樣?不,乙個感嘆號只是單個判斷比如只對null或者只對undefined,使用兩個!!可以對所有truthy和falsy判斷,比如:

let a;

// null、undefined、''、0

if(a !==

null

&&typeof

(a)!==

"undefined"

&& a !== undefined && a !==

''&& a !==0)

let a;if(

!!a)

這兩種方法的功能一樣,但是明顯下面一種更加簡潔。

好像還有三個!!!的,但是並沒有什麼用處。似乎是將1和2都做了一遍,然後回到原點。

三個點(擴充套件運算子),用於傳參時可以看作是rest引數的逆運算,將乙個陣列轉為用逗號分隔的引數陣列,就是說將引數陣列展開了傳入函式中。

let a =[1

,2,3

]function

f(x1,x2,x3)f(

...a)

// 等價於 f(1,2,3)

rest引數和arguments物件的區別:

當用於函式形參時,後面就不能有其他引數,如下將會報錯

function

func

(a,...b, c)

// rest parameter must be last formal parameter

// es6以前

math.max.

(null,[

22,2,

222]

)// es6

math.

max(

...[22,

2,222]

)// 等價於

math.

max(22,

2,222)

;

js ES6 中感嘆號 和三個點

乙個感嘆號 最好理解,也是我們經常使用的。可以將變數轉為boolean值,所有的truthy和falsy都可以被轉化,比如null undefined 數字0和空字串取反都為true,其餘都為false。null true undefined true true 0 true 100 false a...

js 乙個兩個三個感嘆號區別

今天看到乙個前輩使用了三個感嘆號來判斷值,就查了一下,綜合了幾篇文章的觀點 1 乙個感嘆號 可將變數轉換成boolean型別,null undefined和空字串取反都為false,其餘都為true。null true undefined true true 100 false abc false2...

es6 擴充套件運算子 三個點( )

看了阮大大的文章,發現很多都有運算子 暫且叫運算子 三個點點。於是查了一下。其實看起來這樣用也很6 乾貨如下 表面意思 擴充套件運算子 spread 是三個點 它好比 rest 引數的逆運算,將乙個陣列轉為用逗號分隔的引數序列。該運算子主要用於函式呼叫。function push array,ite...