javascript操作符”!~”详解

yizhihongxing

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日

相关文章

  • JSP建立错误页页面并自动跳转

    建立错误页页面并自动跳转的过程如下: 1. 创建错误页页面 在 JSP 项目中,我们可以通过创建一个名为 error.jsp 的 JSP 页面作为错误页页面。在 error.jsp 中,我们可以通过使用 JSP 的内置对象 exception 和 page 变量来输出错误信息,并提供用户回到网站主页的链接,如下所示: <%@ page language…

    JavaScript 2023年5月27日
    00
  • Javascript中引用类型传递的知识点小结

    JavaScript 中,基本类型的值(number、string、boolean、null、undefined)是按值传递的,也就是说改变一个变量的值不会影响另一个变量的值。而引用类型的值(object、array、function)则是按引用传递的,也就是说改变一个变量的值会同时改变另一个变量的值。接下来对引用类型传递的知识点进行详细讲解: 引用类型传递…

    JavaScript 2023年6月10日
    00
  • js判断浏览器是否支持严格模式的方法

    判断浏览器是否支持严格模式,我们可以通过以下两种方法来实现。 方法一 我们可以使用try…catch语句,在try语句中编写一个无法在严格模式下执行的代码,然后在catch语句中捕获错误,如果没有捕获到错误就代表浏览器支持严格模式。 示例代码: var isStrictMode; try { eval("’use strict’; var x …

    JavaScript 2023年6月10日
    00
  • Javascript正则表达式验证账号、手机号、电话和邮箱的合法性

    下面是关于Javascript正则表达式验证账号、手机号、电话和邮箱的合法性的完整攻略。 介绍 正则表达式是一种用于匹配文本的工具,它可以用于验证表单输入、处理文本等任务。在Javascript中,可以使用RegExp对象来定义正则表达式,并使用match()、search()、replace()等方法来操作字符串。下面将介绍如何使用正则表达式来验证账号、手…

    JavaScript 2023年6月10日
    00
  • JavaScript学习笔记之ES6数组方法

    JavaScript学习笔记之ES6数组方法 JavaScript是一种高级编程语言,广泛应用于Web开发中,也是学习编程的一个重要工具。ES6是JavaScript的第六个版本,引入了许多新特性,其中包括一组有用的数组方法,能够大大简化数据集合的处理。本篇文章将深入介绍ES6数组方法,为读者提供完整的学习攻略。 一、ES6数组方法介绍 ES6引入的数组方法…

    JavaScript 2023年5月27日
    00
  • 两种简单的跨域方法(jsonp、php)

    这里就给您详细讲解跨域方法中的jsonp和php。 一、JSONP跨域 概述 JSONP是一种简单的跨域方式,它通过动态添加<script>标签,利用浏览器允许跨域请求资源的特性获取外域的数据,并将数据作为参数传递给回调函数,从而实现跨域获取数据。 实现步骤 在页面中定义一个全局函数,作为回调函数。 通过动态创建<script>标签的…

    JavaScript 2023年5月27日
    00
  • JAVASCRIPT 客户端验证数据的合法性代码(正则)第1/2页

    下面是详细的讲解。 JAVASCRIPT 客户端验证数据的合法性代码(正则)第1/2页 本篇文章主要介绍如何使用JavaScript代码实现客户端验证数据的合法性,具体内容包括正则表达式的使用、表单验证等。 正则表达式的使用 在JavaScript中,可以使用正则表达式来验证数据的格式是否合法。下面是一个示例,用于验证是否为合法的手机号码: function…

    JavaScript 2023年6月1日
    00
  • 微信公众号H5之微信分享常见错误和问题(小结)

    微信公众号H5之微信分享常见错误和问题(小结)攻略 问题一:微信分享异常 在微信公众号H5页面中,经常会出现微信分享异常的问题,具体表现为无法正常分享,或分享后出现无法预览或者预览图不显示等情况。如何解决这类问题呢? 解决方案 1. 确认页面链接的正确性 要保证页面的链接是正确的,即在微信公众号开发平台或微信公众号后台配置的链接一致。 2. 确认分享图片的正…

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