首頁  >  文章  >  web前端  >  詳細解讀JS中!!符號問題

詳細解讀JS中!!符號問題

亚连
亚连原創
2018-06-22 13:51:082096瀏覽

!!一般用來將後面的表達式強制轉換為布林類型的資料(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。

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

使用ES6如何實作單例模式

使用node.js如何建立子進程(詳細教學)

在微信小程式中如何使用slider設定資料值

#在微信小程式中如何實作彈出底部選單

以上是詳細解讀JS中!!符號問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn