JavaScript嘆號(hào),是編程中的一種非常重要的操作符,它可以作為邏輯運(yùn)算符、強(qiáng)制類型轉(zhuǎn)換符,也可以表示函數(shù)的默認(rèn)值和異步代碼中的狀態(tài)標(biāo)識(shí)符等。
作為邏輯運(yùn)算符,嘆號(hào)用來取反布爾值,將true轉(zhuǎn)換為false,將false轉(zhuǎn)換為true。在條件判斷中,嘆號(hào)常常用來檢測某個(gè)變量的值是否為undefined、null、空字符串、0或false等,如下面的例子:
var x = null; if(!x){ console.log("x是null"); } var y = "abc"; if(!y){ console.log("y是空字符串"); }
作為強(qiáng)制類型轉(zhuǎn)換符,嘆號(hào)可以將非布爾值轉(zhuǎn)換為布爾值。任何非0、非空字符串、非null、非undefined、非NaN的值都被視為true,其他值被視為false。下面的代碼演示了將各種類型的值轉(zhuǎn)換為布爾值的結(jié)果:
console.log(Boolean(null)); //false console.log(Boolean("")); //false console.log(Boolean(0)); //false console.log(Boolean(undefined)); //false console.log(Boolean(NaN)); //false console.log(Boolean("abc")); //true console.log(Boolean(1)); //true console.log(Boolean({name:"Tom"})); //true console.log(Boolean([])); //true
除了作為邏輯和類型轉(zhuǎn)換符,嘆號(hào)還可以表示函數(shù)的默認(rèn)值,將函數(shù)參數(shù)默認(rèn)值設(shè)置為false、空字符串、0或空數(shù)組等。比如下面的代碼設(shè)置了函數(shù)的默認(rèn)參數(shù)值:
function greet(name = "world"){ console.log("Hello, " + name + "!"); } greet("Tom"); //Hello, Tom! greet(); //Hello, world!
在異步代碼中,嘆號(hào)也可以用來表示Promise對(duì)象中的狀態(tài)標(biāo)識(shí)符,在then和catch方法中作為參數(shù)傳遞,以便對(duì)異步操作的結(jié)果進(jìn)行處理。比如下面的代碼使用Promise對(duì)象來模擬異步加載圖片,并在then方法中處理結(jié)果:
var imgURL = "http://abc.com/img.jpg"; var imgPromise = new Promise(function(resolve, reject){ var img = new Image(); img.onload = function(){ resolve(img); }; img.onerror = function(){ reject("圖片加載失敗"); }; img.src = imgURL; }); imgPromise.then(function(img){ console.log("圖片加載成功"); }).catch(function(err){ console.log("圖片加載失敗:" + err); });
JavaScript中的嘆號(hào)操作符在編程中有著廣泛的應(yīng)用,不僅可以用來逆轉(zhuǎn)布爾值、強(qiáng)制類型轉(zhuǎn)換,還可以表示函數(shù)默認(rèn)參數(shù)值和Promise對(duì)象的狀態(tài)標(biāo)識(shí)符等。