js运算符的特殊应用
- 是否包含指定字符: ~
- 取整: |
- 取半: >>
- 成长值评级: ||
- 判断奇偶: &
- 交换两个数字的值: ^=
- 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运算符的特殊应用的更多相关文章
- JS运算符
JS运算符: 使用的运算符的时候不需要声明变量,运算符非变量:1.算术运算符 + - * / % (%为取余数运算符) (自增运算符++) (自减运算符 --) + 运算符作用:1.数值相加 2.字符 ...
- js 运算符优先级
在看jquery源码,仔细看入口函数的时候,有点懵了.看到与或.多重三目,傻傻的分不清,就代码仔细的区分下运算符优先级,以前都是呼呼的飘过.看来任何一个细节都不能忽略,不然效率极低.. !functi ...
- js运算符单竖杠“|”的用法和作用及js数据处理
js运算符单竖杠“|”的作用 很多朋友都对双竖杠“||”,了如指掌,因为这个经常用到.但是大家知道单竖杠吗?今天有个网友QQ问我,我的 javascript实用技巧,js小知识 , 这篇文章里面,js ...
- js值类型转换(boolean/String/number),js运算符,if条件,循环结构,函数,三种弹出框
js值类型转换 number | string | boolean boolean类型转换 num = 0; var b1 = Boolean(num); console.log(b1) 转化为数字类 ...
- js运算符的一些特殊应用
作者: 小文 来源: http://www.cnblogs.com/daysme/ 时间: 2017/3/2 17:21:03 本文集合了了js运算符的一些特殊应用. js位运行符的运用. js运算符 ...
- js课程 2-6 js如何进行类型转换及js运算符有哪些
js课程 2-6 js如何进行类型转换及js运算符有哪些 一.总结 一句话总结: 1.所有类型->布尔类型(为假的情况)有哪些(6种)? 1)字符串('')2)整型(0)3)浮点型(0.0)4) ...
- js 运算符的执行顺序
js 运算符的执行顺序 js 运算符优先级 Operator Precedence 下表从最高(21)到最低(1)优先顺序排列 left-to-right 从左到右 / 先左后右 right-to-l ...
- 《JavaScript高级程序设计》学习笔记(2)--JS运算符详解
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 思维导图 前面对JS的运算符的操作很多细节的东西没有提及,今天给大家分享一张网上找的思维导图,对这一部 ...
- 聊聊js运算符 ‘与(&&)’和‘ 或(||)’
一,先来几个问题,看给位能都全部答对. var objA1 = {x:1}; var objA2 = {x:2}; var resultA = objA1 && objA2; //请问 ...
- JS运算符、NaN
一.关系运算符 (< <= > >= == === != !==) 判断符号左右的两个数据的大小之间的关系,运算结果是一个布尔类型的值 == 只判断值 ===即判断值并且 ...
随机推荐
- 疫情下的在线上课方案:QQ直播+蓝墨云班课
目录 疫情下的在线上课方案:QQ群视频(腾讯课堂)+蓝墨云班课 使用QQ进行直播 材料 QQ直播步骤 其他问题 使用蓝墨云班课加强学习效果 教材问题 我的直播-小学生硬笔书法基础 我的直播 - C程序 ...
- windowsCMD常用工具
就目前的经验来看cmd中的命令可以在power shell中正常使用,反之则不行. 另外,据某些现象,推断某些cmd应用使用的字符集应该是不同的.net命令会在utf-8编码下出现中午乱码. 1.ne ...
- python两个_多个字典合并相加
这只是符合比较正常的需求和场景. #一.适用合并两个字典(key不能相同否则会被覆盖),简单,好用. A = {'a': 11, 'b': 22} B = {'c': 48, 'd': 13} #up ...
- PyQt5四大布局方式
1.绝对布局方式'''绝对布局方式,通过move的XY坐标方式来控制控件的位置'''from PyQt5.QtWidgets import *import sys,math class absolut ...
- 内存泄漏与weakMap、weakSet
“DOM 引用造成内存泄露”这一点我们可以使用WeakMap或者WeakSet存储DOM节点,DOM被移除掉WeakMap或者WeakSet内部的DOM引用会被自动回收清除 https://jueji ...
- spring boot jpa 复杂查询 动态查询 连接and和or 模糊查询 分页查询
最近项目中用到了jpa,刚接触的时候有些激动,以前的到层忽然不用写sql不用去自己实现了,只是取个方法名就实现了,太惊艳了,惊为天人,但是慢慢的就发现不是这么回事了,在动态查询的时候,不知道怎么操作了 ...
- ubuntu循环登录
ubuntu12.04管理员账户登录不了桌面,只能客人会话登录 登录管理员账户时,输入密码后,一直在登录界面循环 费了好大劲啊,一上午的时间,终于搞定了,哈哈哈 ctrl+alt+f1 ,切换到tty ...
- Docker for YApi--一键部署YApi
获取YApi镜像$ docker pull mrjin/yapi:latest 注意:本仓库目前只支持安装,暂不支持升级,请知晓.如需升级请备份mongoDB内的数据. docker-compose ...
- spring boot properties文件与yaml文件的区别
编写是没有提示的话在pom中添加依赖,如下: <!-- 配置文件处理器 编写配置时会有提示 --> <dependency> <groupId>org.spring ...
- Kindle阅读产品体验报告-随时随地畅享阅读
产品入门-第一份产品体验报告Kindle阅读-随时随地畅享阅读时间:2018/11/18-11/22 Kindle阅读 一.产品概括 (1)体验环境 机型:荣耀8 系统:EMUI 8.0(Andr ...