問題

我看到一些程式碼似乎使用我不識別的運算子,形式為兩個感嘆號,如下所示:!!.有人可以告訴我這個運算子做了什麼嗎?

我看到的背景是

 this.vertical = vertical !== undefined ? !!vertical : this.vertical;
 

  最佳答案

脅迫oObject到布林值.如果它是Falsey(例如0,null,undefined等),它將是false,否則,true.

 !oObject  //Inverted boolean
!!oObject //Non inverted boolean so true boolean representation
 

所以!!不是運算子,它只是!運算子兩次.

實際世界示例“Test IE版本”:

 let isIE8 = false;  
isIE8 = !! navigator.userAgent.match(/MSIE 8.0/);  
console.log(isIE8); // returns true or false 
 

如果你

 console.log(navigator.userAgent.match(/MSIE 8.0/));  
// returns either an Array or null  
 

但如果你

 console.log(!!navigator.userAgent.match(/MSIE 8.0/));  
// returns either true or false
 

  相同標籤的其他問題

javascriptoperators
上一個問題: