乙個感嘆號(!)最好理解,也是我們經常使用的。!可以將變數轉為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...