什么是 JavaScript 中的“double tilde”运算符

什么是 JavaScript 中的“double tilde”运算符

这是 JavaScript 中一种特殊的运算符。 要理解双波浪线运算符,首先我们需要讨论波浪线运算符或位非运算符。 (~)波浪线运算符接受任何数字并反转二进制数字。例如,如果数字是(100111),经过反转之后它将变为(011000)。因此,如果我们仔细思考,会发现经过两次反转,数字将与之前相同。例如,再次反转(011000),它将变为(100111),与之前一样。

使用双波浪线(~~)运算符,我们可以得到我们开始的数字,那么这种额外操作的用途是什么呢?概念是,在反转数字时,这个(~)运算符会将它们转换为32位有符号整数,不保留小数值。当我们再次反转这个有符号整数时,它会导致正常的反转,由于这个原因,数字要么成为原始数字的floor(小于等于原始数字的整数),要么成为原始数字的ceil(大于等于原始数字的整数)。

以下是这个运算符的用途。

用途:

  1. 它用作计算floor的替代方法,而不是使用Math.floor(),但是给定的数字应该是正数。
  2. 它用作计算小数数字的整数部分的替代方法,而不是使用Math.trunc(),但是条件是给定的数字应该是负数。
  3. 它用作计算ceil的替代方法,而不是使用Math.ceil(),但是条件是给定的数字应该是负数。
  4. 它可以用来将false值(如undefined)转换为零,因此当我们想在这些值上创建计数器而不会遇到任何错误时,它变得有用。

示例 1: 以下示例演示了上述两个函数。首先,我们声明了一个变量,提示框从用户那里获取输入。我们使用~~运算符来计算数字的floor,如果输入的数字是正数,或者计算数字的ceil,如果输入的数字是负数。

<script> 
    let x; 
    x = window.prompt("Enter Any positive Fractional Number"); 
    console.log("The number is ", x); 
      
    if(x>0){ 
      let floorOfX = (~~x); 
      console.log("The floor of the given number is ", floorOfX); 
    } 
    else
    { 
      let ceilOfX = (~~x); 
      console.log("The ceil of the given number is ", ceilOfX); 
    } 
</script>

输出:

什么是 JavaScript 中的“double tilde”运算符

示例2: 在这个示例中,我们将使用波浪号创建一个计数器,以检查数组中特定类型的重复个数

let number=[1, 2, 3, 1, 1, 7]; 
let histogram={}; 
number.forEach( num => histogram[num] = ~~histogram[num] + 1 ); 
console.log("histogram[1]==" + histogram[1]);

输出:

dupCount[1]==3

解释: 在使用双波浪操作符作为计数器时,我们不会得到任何未定义的错误,因为双波浪操作符将之前未定义的值,即未定义数组元素的值,转换为零,并且可以用来递增计数器。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程