javascript中的感嘆號 "!"


JavaScript中會經常遇到一個操作符:!

這是一個布爾操作符,用於將操作的值強制轉換為布爾值並取反。常用場景如下:

//條件判斷中使用
var a;
var b=null;

if(!a){
  console.log("a是假的");  
}

if(!b){
  console.log("b是假的");  
}

//操作布爾值
var c = false;
var d = !c;//d === true;

//IIFE(自執行函數、立即執行函數:Immediately-Invoked Function Expression)
!function(){
    console.log("IIFE");
}();

//轉換值類型
var e=100;
var f='pelli';
var g='';
var h=0;
console.log(!!e);//true;
console.log(!!f);//true;
console.log(!!g);//false;
console.log(!!h);//false;

現在來說一說這四種常見的場景中感嘆號的作用。"!"

1.條件判斷中使用和操作布爾值【取反】

  JavaScript中,感嘆號本來就是取反的意思。比如a===false;則!a===true;

  簡單來說,感嘆號可以把對的(true)變成錯的(false),真的(true)變成假的(false)

  !true===false;

  !"hello"===false;

  !0===true;

  !""===true;

2.雙感嘆號用於轉換值類型【強制轉換為布爾值】

  感嘆號在取反之前會先將數據類型轉換為布爾類型,所以用感嘆號操作后的值,結果一定是布爾值,只有兩個,要么true,要么false。

  一個感嘆號取反,兩個感嘆號就是取反后再取反,就和我們說的負負得正差不多是一個意思。

  由於是兩個感嘆號寫在一起,可能會造成懵懂,這樣寫就會明白。

var a='abcd';
a=!(!a);//true

!!a===!(!a);

3.自執行函數中使用

!!function(){
    //function codes here
}();

自執行函數的寫法有很多種,如下也都可以:

+function(){
    //code
}();

-function(){
   //code        
}();

~function(){
  //code        
}();

(function(){
    //code
})();

(function(){
  //code
}());

其實這里的感嘆號也好,加號也好,只是用了運算符優先級的這一特性,因為這幾個運算符在JavaScript中優先級最高,會將緊緊相鄰的js語句計算出結果,在計算的過程中,就會執行定義的匿名函數,就達到了自執行的效果。

 

總結:感嘆號在js中有兩個作用:

1.取反

2.將值轉換為布爾值:true或false。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM