前面表达式中波浪线运算符的意义
波浪线运算符 (~) 是 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中文网其他相关文章!