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
一.关系运算符 (< <= > >= == === != !==) 判断符号左右的两个数据的大小之间的关系,运算结果是一个布尔类型的值 == 只判断值 ===即判断值并且 ...
随机推荐
- 新手指引,php什么是常量、变量、数组、类和对象及方法?
众所周知,常量.变量.数组.类和对象及方法共同构成了PHP的基石.那么什么是常量?什么是变量?什么是数组?什么是类和对象及方法?我在此谈谈个人浅见,新手指引,高手勿喷. PHP 常量 定义:常量是单个 ...
- java.lang.String和java.util.NClob互相转换
//NClob或Clob转String类型 public String clob2Str(NClob nclob) throws Exception { String content = " ...
- ELK日志分析系统部署
======================================================================================= 操作系统 IP地址 主机 ...
- powerbuilder连接oracle数据库
一.打开已经安装好的pb9.0,主界面菜单栏有个两个圆柱形就行数据库连接,点击database. 二.选择oracle版本,由于数据库版本是9i,可以使用084 oracle8/8i.右键--选择ne ...
- DL4J之CNN对今日头条文本分类
一.数据集介绍 数据来源:今日头条客户端 数据格式如下: 6551700932705387022_!_101_!_news_culture_!_京城最值得你来场文化之旅的博物馆_!_保利集团,马未都, ...
- mysql的一些不常用语句
今天写项目,用的ThinkPHP,写的时候有点费劲,原因嘛 无非是对框架或者mysql的一些知识的遗忘. 1.为了配合ThinkPHP中的控制器,需要修改数据库中表名,一时想不起来,幸好有百度,问题很 ...
- CentOS7安装jenkis
注意:终止运行Ctrl+c , 退回到shell命令Ctrl+d 一.先检查是否有java [root@huangyh huangyh]# rpm -qa |grep java 或 java 因为C ...
- Spring Boot 使用 CXF 调用 WebService 服务
上一张我们讲到 Spring Boot 开发 WebService 服务,本章研究基于 CXF 调用 WebService.另外本来想写一篇 xfire 作为 client 端来调用 webservi ...
- 使用Vue时localhost:8080中localhost换成ip地址后无法显示页面的问题
解决办法是:在package.json中 然后重新启动服务器 npm run dev 就正常显示了.
- 安装树莓派实验的Pi 仪表盘
1.简介 树莓派仪表盘网址:Pi Dashboard (Pi 仪表盘) - MAKER 趣无尽 http://maker.quwj.com/project/10 Pi Dashboard (Pi 仪 ...