javascript操作符”!~”详解

JavaScript操作符 "!~" 详解

操作符说明

在 JavaScript 中,符号 "!~" 是两个操作符的组合。

其中 "!" 是逻辑否定运算符,用于将一个布尔值取反。如果原值为 true,则取反后的值为 false。如果原值为 false,则取反后的值为 true。

而 "~" 是位运算符 NOT,它将操作数的每个二进制位按位取反(0 变为 1 ,1 变为 0)。

综合起来,"!~" 操作符的作用是将一个字符串中的所有字符的 ASCII 值与某个整数进行位操作,并返回一个布尔值,表示是否包含该整数。

示例说明

示例一

下面的代码片段演示了如何使用 "!~" 操作符判断一个字符串是否包含某个字符:

const str = "Hello, world!";

if (!~str.indexOf("o")) {
  console.log("The string does not contain the letter 'o'");
} else {
  console.log("The string contains the letter 'o'");
}

这里使用了 String.prototype.indexOf() 方法来查找字符串中是否包含指定字符。

如果字符串不包含该字符,则 indexOf() 返回 -1。由于 -1 在进行位操作时会被 ~ 运算符转换为 0xffffffff,而 0xffffffff 在进行逻辑非运算时会被转换为 true,所以整个 !~ 表达式的结果为 false,即字符串不包含指定字符。

反之,如果字符串包含该字符,则 indexOf() 返回对应的位置,而该位置经过位操作后不是 0xffffffff,所以整个 !~ 表达式的结果为 true,即字符串包含指定字符。

示例二

下面的代码片段演示了另一个使用 "!~" 操作符的例子:

const nums = [1, 3, 5, 7, 9];

if (!~nums.indexOf(4)) {
  console.log("The array does not contain the number 4");
} else {
  console.log("The array contains the number 4");
}

这里使用了 Array.prototype.indexOf() 方法来查找数组中是否包含指定元素。

如果数组不包含该元素,则 indexOf() 返回 -1。由于 -1 在进行位操作时会被 ~ 运算符转换为 0xffffffff,而 0xffffffff 在进行逻辑非运算时会被转换为 true,所以整个 !~ 表达式的结果为 false,即数组不包含指定元素。

反之,如果数组包含该元素,则 indexOf() 返回对应的位置,而该位置经过位操作后不是 0xffffffff,所以整个 !~ 表达式的结果为 true,即数组包含指定元素。

总结

"!~" 操作符的使用要谨慎,因为它不太直观,容易造成理解和维护上的困难。一般来说,还是建议使用更加明确易懂的语法来编写代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript操作符”!~”详解 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • javascript不同类型数据之间的运算的转换方法

    下面是关于 JavaScript 不同类型数据之间的运算的转换方法的攻略: 类型转换 JavaScript 是一种弱类型语言,允许不同类型之间的运算。但是,不同的类型进行运算时会出现意想不到的结果。为了确保正确的运算结果,我们需要将不同类型的数据转换成相同的类型。 JavaScript 提供了三种类型转换方法: 转换为字符串 转换为数值 转换为布尔值 转换为…

    JavaScript 2023年6月11日
    00
  • JS中如何比较两个Json对象是否相等实例代码

    在JS中比较两个JSON对象是否相等,可以使用深度比较(deep comparison)算法。这是一种递归地比较对象的方式,直到找到两个属性的值不同为止。 以下是比较两个JSON对象的完整攻略: 步骤1:编写比较函数 以下是一个比较两个JSON对象的函数: function compareJSON(obj1, obj2) { // Check if both…

    JavaScript 2023年5月27日
    00
  • JS实现动画中的布局转换

    JS实现动画中的布局转换可以通过以下步骤完成: 选择需要转换布局的元素:使用JavaScript的DOM操作选择需要进行布局转换的元素,可以通过ID、class或标签名来选择。 设计转换效果:通过CSS或JavaScript来设置需要进行的布局转换效果,例如平移、缩放、旋转等。 绑定事件:通过JavaScript来绑定需要触发布局转换效果的事件,例如鼠标移入…

    JavaScript 2023年6月10日
    00
  • 使用JavaScript库还是自己写代码?

    使用JavaScript库还是自己写代码是一个经久不衰的话题。在制作网页时,我们经常要考虑是否使用现有的库或自己编写特定的代码。下面是一些指导思想,以帮助您做出明智的决定。 1. 考虑复杂性 当您需要实现的功能变得越来越复杂时,许多开发人员通常会使用现有的 JavaScript 库来解决问题。例如,为了让一个简单的动画运行,不需要将动画的起始位置和结束位置与…

    JavaScript 2023年6月11日
    00
  • JavaScript获取当前日期是星期几的方法

    当涉及到处理日期和时间时,JavaScript是开发人员的首选语言之一,可以轻松地获取当前日期是星期几。以下是获取当前日期是星期几的方法详细攻略。 1. 获取当前日期和星期 我们可以使用JavaScript内置的Date对象来获取当前日期和星期。 var date = new Date(); console.log(date); // 输出示例: Wed N…

    JavaScript 2023年5月27日
    00
  • JavaScript定时器用法

    JavaScript定时器是一种用于在指定时间间隔后执行代码的功能。在Web应用程序中,它们经常用于将动画效果与其他用户交互部分结合起来。本攻略将详细介绍JavaScript定时器,包括setTimeout和setInterval函数的用法。 setTimeout setTimeout函数允许我们在指定的时间间隔之后执行一段代码。以下是setTimeout函…

    Web开发基础 2023年3月30日
    00
  • 事件冒泡是什么如何用jquery阻止事件冒泡

    事件冒泡是指在页面元素上触发一个事件后,这个事件会依次从当前元素向上层祖先元素进行传递和执行处理的过程。 如何用jQuery来阻止事件冒泡呢?可以使用stopPropagation方法,它能够阻止事件继续向上层元素传播。 下面是一个示例,在这个示例中,我们有三个div元素,分别是嵌套的关系。我们给每个div元素都绑定了click事件,当点击最后一个div元素…

    JavaScript 2023年6月11日
    00
  • javascript弹出带文字信息的提示框效果

    下面是详细讲解”JavaScript弹出带文字信息的提示框效果”的完整攻略。 什么是JavaScript弹出提示框 JavaScript弹出提示框是网页开发中用于向用户展示重要信息的一种交互方式。可以显示文本信息或者请求用户进行操作。一般有三种类型:警告框、提示框和确认框。 其中,提示框是用于弹出信息,不需要用户进行操作,而确认框和警告框需要用户做出相应的处…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部