!!一般用來將後面的表達式強制轉換為布林類型的資料(boolean),也就是只能是true或false。以下來看看透過本文為大家介紹了JS中的!!,需要的朋友參考下吧
!!一般用來將後面的表達式強制轉換為布林類型的資料(boolean),也就是只能是true或false。
var a; var b=!!a;
a預設是undefined。 !a是true,!!a則是false,所以b的值是false,而不再是undefined,也非其它值,主要是為後續判斷提供便利。
因為javascript是弱型別的語言(變數沒有固定的資料型別)所以有時需要強制轉換為對應的型別,類似的如:
a=parseInt(“1234″) a=”1234″-0 //转换为数字 b=1234+”” //转换为字符串 c=someObject.toString() //将对象转换为字符串
其中第1種、第4種為明確轉換,2、3為隱式轉換
布林型的轉換,javascript約定規則為
false、undefinded、null、0、”” 為false
true、1、」somestring」、[Object] 為true
對null與undefined等其他用隱式轉換的值,用!運算子時都會產生true的結果,所以用兩個感嘆號的作用就在於將這些值轉換為「等價」的布林值;
var foo; alert(!foo);//undifined情况下,一个感叹号返回的是true; alert(!goo);//null情况下,一个感叹号返回的也是true; var o={flag:true}; var test=!!o.flag;//等效于var test=o.flag||false; alert(test);
這段例子,示範了在undifined和null時,用一個感嘆號返回的都是true,用兩個感嘆號返回的就是false,所以兩個感嘆號的作用就在於,如果明確設置了變量的值(非null/undifined/0 /”“等值),結果就會根據變數的實際值來返回,如果沒有設置,結果就會返回false。
JS中的「!!」
var o={flag:true}; var test=!!o.flag;//等效于var test=o.flag||false; alert(test);
由於對null與undefined用!操作符時都會產生true的結果,
所以用兩個感嘆號的作用就在於,
如果明確設定了o中flag的值(非null/undefined/0""/等值),自然test就會取跟o .flag一樣的值;
如果沒有設置,test就會預設為false,而不是null或undefined。
上面是我整理給大家的,希望今後對大家有幫助。
相關文章:
以上是詳細解讀JS中!!符號問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!