我们知道平常的数值运算,其本质都是先转换成二进制再进行运算的,而位运算是直接进行二进制运算,所以原则上位运算的执行效率是比较高的,由于位运算的博大精深,下面通过一些在js中使用位运算的实例。
除了传统使用求余数%的方式外,还可以使用一个数和1进行按位&操作进行判断,如下
function assert(n) {
if (n & 1) {
console.log("n是奇数");
} else {
console.log("n是偶数");
}
}
// 异或运算取整::位运算只对整数有效,遇到小数时,会将小数部分舍去,只保留整数部分。所以,将一个小数与0进行或运算,等同于对该数去除小数部分,即取整数位。
12.9 ^ 0 // 12
-12.9 ^ 0 // -12
// 双否定位操作符取整
~~4.9 // 4
~~(-4.9) // -4
// 左移0位,就相当于将该数值转为32位整数,等同于取整,对于正数和负数都有效。
13.5 << 0 // 13
-13.5 << 0 // -13
// 或运算取整:位运算只对整数有效,遇到小数时,会将小数部分舍去,只保留整数部分。所以,将一个小数与0进行或运算,等同于对该数去除小数部分,即取整数位。
2.9 | 0 // 2
-2.9 | 0 // -2
16进制颜色值转RGB:
function hexToRGB(hex){
var hex = hex.replace("#","0x"),
r = hex >> 16,
g = hex >> 8 & 0xff,
b = hex & 0xff;
return "rgb("+r+","+g+","+b+")";
}
RGB转16进制颜色值:
function RGBToHex(rgb){
var rgbArr = rgb.split(/[^\d]+/),
color = rgbArr[1]<<16 | rgbArr[2]<<8 | rgbArr[3];
return "#"+color.toString(16);
}
运行hexToRGB("#ffffff")返回"rgb(255,255,255)",运行RGBToHex("rgb(255,255,255)")返回"#ffffff"。更多关于位运算的请看:巧用JS位运算
计算机被发明的初衷仅仅是为了快速实现一些数学计算,然而经过多年发展,计算机已经不单单能实现快速计算这么简单的工作了,现代计算机不仅能够进行数值的计算,还能进行逻辑计算,还具备存储记忆功能,是能够按照程序运行
==、===都是相等运算符,这个大家应该都知道,但二者有什么区别呢?其实==是相等,===是严格相等,那他们有什么本质的区别呢?下面我就给大家细细道来。
大家是怎么实现斐波那契列数的,再给两种解法,对比一下,还有一种更简单的用的是数组存储
断点调试之后发现无论如何都不相等,方法parseInt()返回的结果确实是NaN,但是与右侧的NaN比较返回的结果却是false,这时候才突然想起来NaN有不等于自身的特性
所有与string类型数据进行运算得到的结果一定是字符类型;与number类型数据进行运算时,会将其它非string类型数据转换为number,若转换成功,则结果为number,转换不成功则为:NaN;
在开发中展示点赞数时,当数量级超过10000后,需要使用更加简洁的小数式去显现数量(例如1.22万)。下面就给大家分享数量小数式后保留两位小数的实现方式。
比较和逻辑运算符用于测试 true 或 false。比较运算符在逻辑语句中使用,以判定变量或值是否相等。我们给定 x = 5,下表中解释了比较运算符:
JavaScript的很多奇技淫巧,都来自于对运算符的灵活使用。JavaScript的JavaScript的很多奇技淫巧,都来自于对运算符的灵活使用。优先级: 优先级高的运算符最先被执行
是可以通过检验的,并且在js中也是按数学表达式计算结果的, 但是这个算不算“合格”的数学表达式呢?这个就看具体情况了吧,要规避也比较简单
前端工作中经常遇到数字计算保留小数问题,由于不是四舍五入的方式不能使用toFixed函数,本文采用正则表达式匹配字符串的方式,解决对数字的向上或向下保留小数问题:
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!