< p >JavaScript中的感嘆號!是一個很有意思的運算符。它可以被用于多種場合,用來表示邏輯非、數學中的階乘、正則表達式中的否定以及自執行函數等等。下面就讓我們來一一解析這些應用。< /p>
< p >邏輯非:< pre >var a = true;
if(!a){
console.log("a是false");
}
//輸出結果:無
if(!false){
console.log("false是true");
}
//輸出結果:false是true< /pre >< /p>
< p >在JavaScript中,!可以用來表示邏輯非,即將一個真值變成相反的假值,或者反之。上面的代碼中,我們先定義了一個變量a并賦值為true,然后在第一個if判斷語句中使用!a表示如果a是false,則輸出相應信息。因為a的值是true,所以if語句不成立,不做任何操作;第二個if語句中,我們直接將false放到!運算符后面,表示輸出的結果是false的相反值。因為false是假值,所以!false表示的是true,因此輸出了”false是true”。< /p>
< p >階乘:< pre >function factorial(n){
return n<=1?1:n*factorial(n-1);
}
console.log(factorial(10));//輸出結果:3628800< /pre >< /p>
< p >另外一個常見的使用!運算符的場景是計算階乘。我們可以用遞歸調用來實現階乘的計算,每次算出n的階乘前,需要先計算n-1的階乘,這個遞歸調用可以一直執行到n等于1時停止。當n等于1時,返回1表示階乘計算完成。上述代碼中,通過遞歸調用來實現10的階乘,即10*9*8*7*6*5*4*3*2*1,結果輸出是3628800。< /p>
< p >正則表達式中的否定:< pre >var str = "Hello world!";
console.log(str.replace(/[!]/g,""));
//輸出結果:"Hello world"< /pre >< /p>
< p >在正則表達式中,!表示的是一個否定符號,也就是說我們可以使用!來排除一些內容,只匹配與其相反的內容。例如在上面的代碼中,我們首先定義了一個字符串str,它包含了一個感嘆號。我們使用正則表達式/[!]/g來匹配其中所有的感嘆號,并將其用空字符串替換掉,因此輸出的結果就是”Hello world”,感嘆號已經被刪除。< /p>
< p >自執行函數:< pre >(function(){
console.log("I am self-executing!");
})();
//輸出結果:"I am self-executing!"< /pre >< /p>
< p >自執行函數是JavaScript編程中很重要的一個概念,它是指一個函數在被定義后,立即執行。使用!(邏輯非)可以讓定義的函數代表一個值,不必先給這個函數命名,可以在定義后立刻調用執行。上述代碼中,我們用括號把匿名函數包裹起來,使其變成表達式,接著在最后加一個括號(),使其立即執行。控制臺輸出了”I am self-executing!”這個信息。< /p>
< p >總結:
一些簡短的符號如!運算符,它們背后隱藏著很多強大的功能和用法,對于JavaScript編程的開發者而言,了解它們是非常必要的。當然,我們在代碼中使用這些符號的同時也需要注意到代碼的可讀性和可維護性,盡量保證代碼的清晰簡潔,易于理解和修改。< /p>
< p >邏輯非:< pre >var a = true;
if(!a){
console.log("a是false");
}
//輸出結果:無
if(!false){
console.log("false是true");
}
//輸出結果:false是true< /pre >< /p>
< p >在JavaScript中,!可以用來表示邏輯非,即將一個真值變成相反的假值,或者反之。上面的代碼中,我們先定義了一個變量a并賦值為true,然后在第一個if判斷語句中使用!a表示如果a是false,則輸出相應信息。因為a的值是true,所以if語句不成立,不做任何操作;第二個if語句中,我們直接將false放到!運算符后面,表示輸出的結果是false的相反值。因為false是假值,所以!false表示的是true,因此輸出了”false是true”。< /p>
< p >階乘:< pre >function factorial(n){
return n<=1?1:n*factorial(n-1);
}
console.log(factorial(10));//輸出結果:3628800< /pre >< /p>
< p >另外一個常見的使用!運算符的場景是計算階乘。我們可以用遞歸調用來實現階乘的計算,每次算出n的階乘前,需要先計算n-1的階乘,這個遞歸調用可以一直執行到n等于1時停止。當n等于1時,返回1表示階乘計算完成。上述代碼中,通過遞歸調用來實現10的階乘,即10*9*8*7*6*5*4*3*2*1,結果輸出是3628800。< /p>
< p >正則表達式中的否定:< pre >var str = "Hello world!";
console.log(str.replace(/[!]/g,""));
//輸出結果:"Hello world"< /pre >< /p>
< p >在正則表達式中,!表示的是一個否定符號,也就是說我們可以使用!來排除一些內容,只匹配與其相反的內容。例如在上面的代碼中,我們首先定義了一個字符串str,它包含了一個感嘆號。我們使用正則表達式/[!]/g來匹配其中所有的感嘆號,并將其用空字符串替換掉,因此輸出的結果就是”Hello world”,感嘆號已經被刪除。< /p>
< p >自執行函數:< pre >(function(){
console.log("I am self-executing!");
})();
//輸出結果:"I am self-executing!"< /pre >< /p>
< p >自執行函數是JavaScript編程中很重要的一個概念,它是指一個函數在被定義后,立即執行。使用!(邏輯非)可以讓定義的函數代表一個值,不必先給這個函數命名,可以在定義后立刻調用執行。上述代碼中,我們用括號把匿名函數包裹起來,使其變成表達式,接著在最后加一個括號(),使其立即執行。控制臺輸出了”I am self-executing!”這個信息。< /p>
< p >總結:
一些簡短的符號如!運算符,它們背后隱藏著很多強大的功能和用法,對于JavaScript編程的開發者而言,了解它們是非常必要的。當然,我們在代碼中使用這些符號的同時也需要注意到代碼的可讀性和可維護性,盡量保證代碼的清晰簡潔,易于理解和修改。< /p>