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的几个注意事项
,==============坑======= 1.可变类型的值不要作为函数参数默认值,应该是不可变的对象,如None,True,False,数字或字符串 2.小心+= a = range(10) b ...
- ArcCatalog连接ArcSDE连接报:unable to create new database connection file,permission is denied
参考博文:链接 ArcCatalog连接ArcSDE连接报:unable to create new database connection file,permission is denied 最近经 ...
- Distribution(F题)---第八届河南省程序设计大赛
Description One day , Wang and Dong in the Dubai desert expedition, discovered an ancient castle. Fo ...
- android(七)Looper Handler分析
一.总结 Looper有一个MessageQueue,用于封装消息循环. Handler封装了消息投递,消息处理等的辅助类 二.分析 1.从Looper的用法开始分析 class LooperTh ...
- mysql 连接查询 join
本文用到的表 CREATE TABLE `cls` ( `cls_id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, PRIMARY KEY (`cls ...
- mysql 操作sql语句 操作数据表中的内容/记录
#3. 操作文件中的内容/记录 往哪张表去插入 insert into 表名指定字段(id,name) 插入要加values(针对前面字段插入)(2,mike); insert into t1(id, ...
- mysql 数据表的增删改查 目录
mysql 表的增删改查 mysql 表的增删改查 修改表结构 mysql 复制表 mysql 删除表
- python 面向对象 析构方法
实例化但从来没有调用他,就浪费了,就应该自动删除它 这个实例一直存在内存里 python有个垃圾自动回收机制 , 每段时间会自动刷新整个内存,把内存垃圾东西删除 析构函数: 在实例释放.销毁的时候 ...
- python 基础 特殊符号的使用
python语句中的一些基本规则和特殊符号: 1.井号# 表示之后的字符为python注释 Python注释语句从#号字符开始,注释可以在语句的任何一个地方开始,解释器会忽略掉该行#号之后的所有内容 ...
- 【深入理解javascript】执行上下文
参考原文:执行上下文 1.每一个执行上下文,工作分为三个阶段: 准备阶段–>执行阶段–>调用阶段 准备阶段:代码执行之前,设置数据,相当于初始化. 执行阶段:开始执行每一行代码. 调用阶段 ...