javascript中的取反再取反~~没有意义
2018-10-12 14:04
381 查看
操作符~, 是按位取反的意思,表面上~~(取反再取反)没有意义,实际上在JS中可以将浮点数变成整数。
<html>
<script>
var myArray = new Array();
myArray.push("a");
myArray.push("b");
myArray.push("c");
myArray.push("d");
//现在要随机从数组中取出一个元素
var random = myArray[~~(Math.random()*myArray.length)]; //Math.random()返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1)
var i = 7.94;
i = ~~i;
alert(i);
var j = 7.34;
j = ~~j;
alert(j);
</script>
</html>
如上,如果没有~~,那么随机得到的是小数,而且是将小数的小数部分去掉,保留整数。如上面i=7,j=7。然而在C中并不存在这种机制,C中对一个浮点数(float)是不能按位取反的,而且C中可以用强制类型转换(而JS中则没有这种机制,浮点数转整数)达到同样的目的(舍弃小数部分,保留整数部分)。
相关文章推荐
- javascript中的取反再取反~~没有意义
- 1j2ee即web项目,严格意义上来说,没有jsp代码,只有class文件、html文件、javascript文件。2 基于extjs框架的项目怎么怎么查看在浏览器中展示的最终html页面的代码 3
- JavaScript是没有域的限制
- 没有块级作用域的javascript...
- 关于JavaScript中apply与call的用法意义及区别
- json错误(没有转化为javascript的错误)
- javascript取反再取反的作用
- javascript王国的一次旅行,一个没有类的世界怎么玩转面向对象?
- 深入理解JavaScript没有重载的原因:
- 通过实例理解javascript中没有函数重载的概念
- javascript中的取反再取反~~
- 《高性能javascript》中推荐的javascript字符串trim方法(假设没有原生方案)
- javascript BrowseForFolder Shell.Application 没有权限
- 深入理解JavaScript系列 ----(9):根本没有“JSON对象”这回事!
- JavaScript 中的 this 陷阱的最全收集 - 没有之一
- JavaScript没有块级作用域
- 使用JavaScript时在变量前加2个感叹号意义
- 没有什么意义的记录
- javascript构造函数如果没有形参允许省略圆括号
- 死亡没有意思,但是死亡这个概念却很有意义