js运算符的一些特殊用法


Posted in Javascript onJuly 29, 2018

本文集合了了js运算符的一些特殊应用。

js位运行符的运用。
js运算符的使用技巧。

是否包含指定字符: ~

~"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)
}

取整: |

num | 0

num 整数

例:

1.3 | 0 //1

取半: >>

num >> 1

num 整数
例:求 50 的 1/2

50 >> 1 //25
有除号 / 干嘛不用呢?多好呀: 50/2 //25

成长值评级: ||

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

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

val 成长值。

判断奇偶: &

num & 1

num 整数

例:

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

交换两个数字的值: ^=

使用位运行符:

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

使用数组:

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

2的n次方: << 和 **

1 << n-1

使用位运行符:

2的n次方
例:2的3次方:1<<3 //8

使用幂运行符:

个人觉得这个不如直接使用 幂 的方式好。

x的y次方: x**y

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

方法比较:

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

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

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

!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

字符串转数字: +

+str

例:

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

转为 Boolean 值: !!

!!obj

例:

!!'text' //true

Javascript 相关文章推荐
准确获得页面、窗口高度及宽度的JS
Nov 26 Javascript
js单词形式的运算符
May 06 Javascript
简介JavaScript中strike()方法的使用
Jun 08 Javascript
前端js实现文件的断点续传 后端PHP文件接收
Oct 14 Javascript
详解js的事件代理(委托)
Dec 22 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
Apr 25 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
Sep 18 Javascript
微信小程序调用摄像头隐藏式拍照功能
Aug 22 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
Dec 27 Javascript
vue使用map代替Aarry数组循环遍历的方法
Apr 30 Javascript
原生JS生成指定位数的验证码
Oct 28 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
Dec 01 Vue.js
不得不知的ES6小技巧
Jul 28 #Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
Jul 28 #Javascript
Angular6笔记之封装http的示例代码
Jul 27 #Javascript
Vue 中axios配置实例详解
Jul 27 #Javascript
vue中设置height:100%无效的问题及解决方法
Jul 27 #Javascript
vue中使用echarts制作圆环图的实例代码
Jul 27 #Javascript
vue 录制视频并压缩视频文件的方法
Jul 27 #Javascript
You might like
第十五节--Zend引擎的发展
2006/11/16 PHP
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
PHP5权威编程阅读学习笔记 附电子书下载
2012/07/05 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
关于JS解构的5种有趣用法
2019/09/05 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
PyQt5的相对布局管理的实现
2020/08/07 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
初中生三年学习生活的自我评价
2013/11/03 职场文书
触摸春天教学反思
2014/02/03 职场文书
企业授权委托书范本
2014/09/22 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
2014年教务工作总结
2014/12/03 职场文书
教师节班会开场白
2015/06/01 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python