前面表達式中波浪線運算子的意義
波浪線運算子(~) 是JavaScript 中的按位運算符,用於翻轉表達式中的所有位元它的操作數。此運算子在表達式求值之前不常用,因此引發了對其目的和意義的疑問。
讓我們考慮以下範例程式碼:
var attr = ~'input,textarea'.indexOf( target.tagName.toLowerCase() ) ? 'value' : 'innerHTML'
在此程式碼中,波浪號運算子在indexOf() 函數。 indexOf() 函數傳回字串中目標字串第一次出現的索引。如果沒有找到目標字串,則傳回-1。
波浪線運算子的效果
波浪線運算子將indexOf()的回傳值轉換為32位元整數並翻轉其所有位元。例如,如果indexOf()返回-1(表示未找到目標字串),波形符運算子將翻轉其二進位表示的所有位元:
0000 0000 0000 0000 0000 0000 0000 0001 (original) => 1111 1111 1111 1111 1111 1111 1111 1110 (inverted)
結果是一個正數,在JavaScript 中被視為true。因此,如果未找到目標字串,則表達式 ~'input,textarea'.indexOf(target.tagName.toLowerCase()) 計算結果為 true,如果找到,則計算結果為 false。
使用波形符運算子的情況
雖然不常見,但波形符運算子有多種用途,包括:
波浪號運算子的替代品
為了測試字串或陣列中值是否存在,JavaScript 現在提供了專用方法:
這些方法直接傳回一個布林值,使它們成為波浪號更清晰、更高效率的替代方案運算子。
結論
波形符運算子在表達式前面時,會將表達式的值轉換為位元表示形式並翻轉其所有位元。它有一些晦澀的用途,但通常不鼓勵使用,因為與 Array.prototype.includes() 和 String.prototype.includes() 等更現代的方法相比,它缺乏清晰度並且相關性降低。
以上是為什麼 JavaScript 中的表達式之前要使用波形符運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!