• 是否包含指定字符: ~
  • 取整: |
  • 取半: >>
  • 成长值评级: ||
  • 判断奇偶: &
  • 交换两个数字的值: ^=
  • 2的n次方: << 和 ** 1 << n-1
  • 是否是指定字符串开头: ! 和 ^
  • 字符串转数字: +
  • 转为 Boolean 值: !!
  • 转为数字类型:~~

1、是否包含指定字符: ~

~"str1".indexOf("str2")

//str1 被查找的字符串
//str2 查找的字符串
//如果 str1 不含有 str2 ,则返回数字 0 。

例子

var str1='abc';
var str2='a';
if(~str1.indexOf(str2)){
console.log('有'+str2) //有a
}else{
console.log('无'+str2)
}

2、取整: |

num | 0

//num为正数时,相当于Math.floor()向下取整
//num为负数时,相当于Math.ceil()向上取整
// |后面必须是0,是0达到的是取整的效果,不是0,相当于转换为二进制之后相加的结果
//(4|4)=4 即转换为二进制之后100 |100 相加得到100=4

例子

1.3 | 0 //

3、取半: >>

num >> 1

//num 整数

例:求 50 的 1/2

50 >> 1 //

4、成长值评级: ||

需求1:
成长值为5是1星;
成长值为10是2星;
成长值为12是3星;
成长值为15是4星;
其他都是0星。

({'5':1,'10':2,'12':3,'15':4}[val] || 0);

//val 成长值。

5、判断奇偶: &

num & 1      //num 整数

//例子
var num=3;
if (num & 1) {
console.log("num是奇数"); //num是奇数
} else {
console.log("num是偶数");
}

6、交换两个数字的值: ^=

方法1:使用位运行符:

var num1 = 1, num2 = 2;
num1 ^= num2;
num2 ^= num1;
num1 ^= num2;
console.log(num1,num2); //2 1

方法2:使用数组:

var num1 = 1, num2 = 2;
num1 = [num2, num2 = num1][0];
console.log(num1,num2); //2 1

7、2的n次方: << 和 **

方法1:使用位运行符:

1 << n-1        //2的n次方

//例子:2的3次方:
1<<3 //

方法2:使用幂运行符:

 x**y    //x的y次方

//例:2的3次方:
2**3 //

方法比较:

使用 << 的方式可以支持负数,** 需要用括号否则出错。
使用 ** 比较直观,没研究过 << 方法的任意数的任意次方的规律。

1<<3 //
2**3 //
-1<<3 //-8
-2**3 // 报错
-(2**3) //-8
3<<2 //12 错误
3**2 //9 正确

8、是否是指定字符串开头: ! 和 ^

!str1.indexOf("str2")

//例:

var str1='abc';
var str2='a';
if(!str1.indexOf(str2)){
console.log('是开头')
}else{
console.log('不是开头')
}

使用正则方式

/^a/.test('abc') //a开头,true
/c$/.test('abc') //c结尾,true

9、字符串转数字: +

+str

//例:

var str='123';
typeof(str) //string
typeof(+str) //number

10、转为 Boolean 值: !!

!!obj

//例:
!!'text' //true

11、转为数字类型:~~

~~‘1’=1
~~true == 1
~~false == 0
~~"" == 0
~~[] == 0 ~~undefined ==0
~~!undefined == 1
~~null == 0
~~!null == 1

js运算符的特殊应用的更多相关文章

  1. JS运算符

    JS运算符: 使用的运算符的时候不需要声明变量,运算符非变量:1.算术运算符 + - * / % (%为取余数运算符) (自增运算符++) (自减运算符 --) + 运算符作用:1.数值相加 2.字符 ...

  2. js 运算符优先级

    在看jquery源码,仔细看入口函数的时候,有点懵了.看到与或.多重三目,傻傻的分不清,就代码仔细的区分下运算符优先级,以前都是呼呼的飘过.看来任何一个细节都不能忽略,不然效率极低.. !functi ...

  3. js运算符单竖杠“|”的用法和作用及js数据处理

    js运算符单竖杠“|”的作用 很多朋友都对双竖杠“||”,了如指掌,因为这个经常用到.但是大家知道单竖杠吗?今天有个网友QQ问我,我的 javascript实用技巧,js小知识 , 这篇文章里面,js ...

  4. js值类型转换(boolean/String/number),js运算符,if条件,循环结构,函数,三种弹出框

    js值类型转换 number | string | boolean boolean类型转换 num = 0; var b1 = Boolean(num); console.log(b1) 转化为数字类 ...

  5. js运算符的一些特殊应用

    作者: 小文 来源: http://www.cnblogs.com/daysme/ 时间: 2017/3/2 17:21:03 本文集合了了js运算符的一些特殊应用. js位运行符的运用. js运算符 ...

  6. js课程 2-6 js如何进行类型转换及js运算符有哪些

    js课程 2-6 js如何进行类型转换及js运算符有哪些 一.总结 一句话总结: 1.所有类型->布尔类型(为假的情况)有哪些(6种)? 1)字符串('')2)整型(0)3)浮点型(0.0)4) ...

  7. js 运算符的执行顺序

    js 运算符的执行顺序 js 运算符优先级 Operator Precedence 下表从最高(21)到最低(1)优先顺序排列 left-to-right 从左到右 / 先左后右 right-to-l ...

  8. 《JavaScript高级程序设计》学习笔记(2)--JS运算符详解

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 思维导图 前面对JS的运算符的操作很多细节的东西没有提及,今天给大家分享一张网上找的思维导图,对这一部 ...

  9. 聊聊js运算符 ‘与(&&)’和‘ 或(||)’

    一,先来几个问题,看给位能都全部答对. var objA1 = {x:1}; var objA2 = {x:2}; var resultA = objA1 && objA2; //请问 ...

  10. JS运算符、NaN

    一.关系运算符  (< <= > >= == === != !==) 判断符号左右的两个数据的大小之间的关系,运算结果是一个布尔类型的值 ==   只判断值 ===即判断值并且 ...

随机推荐

  1. opencv:自定义滤波

    卷积核的定义 均值卷积核 // 自定义滤波 - 均值卷积 int k = 15; Mat mkernel = Mat::ones(k, k, CV_32F) / (float)(k * k); Mat ...

  2. CSS控制 文字超出部分显示省略号

    实现单行文本的溢出显示省略号, (需要加宽度width属来兼容部分浏览) <p style="width: 100px;overflow: hidden;white-space: no ...

  3. python 读取一个文件夹下的所jpg文件保存到txt中

    最近需要使用统计一个目录下的所有文件,使用python比较方便,就整理了一下代码. import os def gci(filepath): files = os.listdir(filepath) ...

  4. RTU license

    Right to Use (RTU) licensing is a model in which licenses are not tied to a unique device identifier ...

  5. Python(二) isinstance

    原文链接: http://www.baike.com/wiki/isinstance&prd=jinshan https://www.liaoxuefeng.com/wiki/00143160 ...

  6. 文件服务器之fastDFS

    FastDFS是一个开源的轻量级分布式文件系统,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合中小文件(建议范围:4KB < file ...

  7. SpringCloud或SpringBoot+Mybatis-Plus利用mybatis插件实现数据操作记录及更新对比

    引文 本文主要介绍如何使用mybatis插件实现拦截数据库操作并根据不同需求进行数据对比分析,主要适用于系统中需要对数据操作进行记录.在更新数据时准确记录更新字段 核心:mybatis插件(拦截器). ...

  8. C++基础之字符串string

    C++基础之字符串string 标准库类型string表示可变长的字符序列,使用string类型必须首先包含string头文件.作为标准裤的一部分,string定义在命名空间std中. 定义和初始化s ...

  9. 【代码审计】VAuditDemo 文件包含漏洞

    在 index.php中先判断get过来的module是否设置了变量,如果已经设置,则包含module,并与字符串.inc拼接 inc格式一般是图标或者头像格式,因此我们可以初步判断,这个包含应该是基 ...

  10. tkinter学习(3)scale尺度条和menu菜单

    1.scale学习(尺度条)1.1 代码: #第1步:导出模块 import tkinter as tk #第2步:定义窗口,及其标题.大小和位置 win = tk.Tk() win.title('s ...