JS中的按位非(~)的使用技巧
按位非
按位非操作符由一个波浪线(~)表示,执行按位非的结果就是返回数值的反码
现在让我来看几个例子
例子1
console.log(4);
console.log(~4);
console.log(~~4);
例子2
console.log(4.9.toString(2));
console.log(~4.9);
console.log(~~4.9);
例子3
console.log(-4.1.toString(2));
console.log(~-4.1);
console.log(~~-4.1);
结论
通过上面的例子我们可以知道对于整数,按位非就是操作数的负值减1.
但是对于浮点数就比较麻烦了,操作浮点数时,会直接舍去小数部分,再取负值减1
利用这点我们可以可以使用~~来代替Math.floor();
比如我们经常求一个数组的中点,就可以直接~~(arr.length/2),是不是比Math.floor()来的更方便呢?
此外|0操作也可以达到和~~类似的效果,例如(arr.length/2)|0
再补充个小知识:
console.log(~~NaN);//
console.log(NaN|0);//
JS中的按位非(~)的使用技巧的更多相关文章
- js-分享107个js中的非常实用的小技巧(借鉴保存)
转载原文:http://***/Show.aspx?id=285 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:doc ...
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
项目开发中的一些注意事项以及技巧总结 1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...
- 处理 JS中 undefined 的 7 个技巧
摘要: JS的大部分报错都是undefined... 作者:前端小智 原文:处理 JS中 undefined 的 7 个技巧 Fundebug经授权转载,版权归原作者所有. 大约8年前,当原作者开始学 ...
- Javascript开发技巧(JS中的变量、运算符、分支结构、循环结构)
一.Js简介和入门 继续跟进JS开发的相关教程. <!-- [使用JS的三种方式] 1.HTML标签中内嵌JS(不提倡使用): 示例:<button onclick="javas ...
- (网页)JS中的小技巧,但十分的实用!
转自CSDN: 1.document.write(”"); 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:document->html->(head,body)4. ...
- 分享一个在js中判断数据是undefined,NaN,null,的技巧
教大家如何在js中判断一个值是否是undefined,null,NaN,以及如何单独判断 平常开发过程中大家可能遇到一种问题,就是取页面某个值的时候获取不到这个var就是undefined了,如果是数 ...
- js中this关键字测试集锦
参考:阮一峰<javascript的this用法>及<JS中this关键字详解> this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在 ...
- 客户端JS性能的一些优化的小技巧
下面是一些关于客户端JS性能的一些优化的小技巧:1.[顶]关于JS的循环,循环是一种常用的流程控制.JS提供了三种循环:for(;;). while().for(in).在这三种循环中 for(in) ...
随机推荐
- Python:字符串处理函数
split() / join() 拆分和组合 #split() 通过指定分隔符对字符串进行切片(拆分),默认空格符 lan = "python ruby c c++ swift" ...
- iOS多线程编程之创建线程(转载)
一.创建和启动线程简单说明 一个NSThread对象就代表一条线程 (1)创建.启动线程 NSThread *thread = [[NSThread alloc] initWithTarget:sel ...
- 删除未加入svn版本控制的文件(包括文件夹)
删除未加入svn版本控制的文件(包括文件夹) svn status | grep '^?' | awk '{print $2}' | xargs rm -rf
- 如何删除word中多余的空格和空行
去除word中多余的空格及空行 一.去掉表格和格式 为了版面的整齐,网页文档都是以表格的形式存在的,只是一般情况下表格的颜色被设为无色或表格宽度被设为0,所以我们在网页上看不到表格.另外,网 页文档中 ...
- 推荐两个国外网站-帮你优化网站SEO和预测下期的PR值
第一个:http://www.domaintools.com/ (谷歌SEO网站优化伴侣)可以测试你优化网站的分数. 这里使用说明,简单说一下吧: 打开网站后输入自己的域名,点击搜索按钮 第二个查看分 ...
- mysql 内置功能 存储过程 创建无参存储过程
操作哪个数据库,就把存储过程建到那个数据库 例如 现在use db2; 应该把存储过程 建立到db2数据库里 创建无参存储过程 delimiter // # 设置mysql结束符合为// create ...
- dedecms调用副栏目文章怎么操作
最近ytkah的网站进行改版,添加了一些新栏目,做更精准的着陆页,有些文章比较简短并且很早以前就发布过了,如果再添加这样的文档就有点重复了,于是就想着用文章副栏目的属性,可却调不出来,怎么办?查找官方 ...
- vue之vue-cookies
vue之vue-cookies npm链接:https://www.npmjs.com/package/vue-cookies 安装: npm install vue-cookies --save 使 ...
- 深度学习Momentum(动量方法)
转自:http://blog.csdn.net/bvl10101111/article/details/72615621 先上结论: 1.动量方法主要是为了解决Hessian矩阵病态条件问题(直观上讲 ...
- MVC左边导航,左边内容变,通过AJAX方法实现
前台: @{ ViewBag.Title = "爱湛师-个人信息"; Layout = "~/Views/Shared/DefaultMaster.cshtml" ...