波浪号在表达式之前会做什么?
var attr = ~’input,textarea’.indexOf( target.tagName.toLowerCase() )
? ‘value’
: ‘innerHTML’
我在一个答案中看到了它,而我从未见过。
这是什么意思?
回答:
~
是按位运算符,用于翻转其操作数中的所有位。
例如,如果您的数字为1
,则其对IEEE754浮点数JavaScript如何处理数字的二进制表示将是…
0011 1111 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
因此~
将其操作数转换为32位整数(JavaScript中的按位运算符会执行此操作)…
0000 0000 0000 0000 0000 0000 0000 0001
如果它是负数,则将其存储为2的补码:将所有位取反并加1。
…然后翻转所有位…
1111 1111 1111 1111 1111 1111 1111 1110
那么,它的用途是什么?什么时候可以使用它?
它有很多用途。如果您正在写低级的东西,这很方便。如果您对应用程序进行了概要分析并发现了瓶颈,则可以通过使用按位操作(作为更大的包装中的一种 可能的
工具)来提高性能。
这也是一个(一般)不清楚绝招打开indexOf()
的发现返回值放入truthy(同时使未找到为 falsy)人们通常会增加一倍它用它截断数字为32位(和丢弃其小数代替它的副作用,实际上与Math.floor()
正数相同)。
我说不清楚,因为目前尚不清楚它的用途。通常,您希望您的代码与阅读它的其他人清楚地交流。虽然使用起来~
可能 看起来很酷,但出于自身利益 考虑 ,通常太聪明了。:)
现在JavaScript具有Array.prototype.includes()
和也不再相关String.prototype.includes()
。这些返回布尔值。如果您的目标平台支持它,则应首选此方法来测试字符串或数组中是否存在值。
以上是 波浪号在表达式之前会做什么? 的全部内容, 来源链接: utcz.com/qa/397639.html