常常在javascript中?? || !!老司机写法,看不懂什么意思,下面详细讲解一下js中 ?? , || , &&, ?. 概念。
?? 是根据 null 和 undefined 判断的,
|| 是根据 布尔值 false 判断的, 左侧为true 不看右侧
&& 左侧为false 不看右侧
?. ”可选链操作符“,允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。在引用 null 或者 undefined 的情况下不会引起错误(主要是用于防止报错!)
一、&& 是与运算,左侧true返回右侧,左侧false直接返回左侧
let aa = true && false // aa是 false let aa = false && true // aa是false
二、|| 是或运算,左侧true返回左侧,左侧false直接返回右侧
let aa = true || false // aa是true let aa = false || true // aa是true
三、??空值合并操作符,只有当左侧是null和undefind,才会返回右侧,其余情况返回左侧,和 || 运算符类似,又有不同 || 运算符当左侧是假值的情况就会返回右侧,如 0 或者 ""
let aa = null ?? 1 // aa是1 let aa = null || 1 // aa是1 let aa = undefind ?? 1 // aa是1 let aa = undefind || 1 // aa是1 let aa = 0 ?? 1 // aa是0 let aa = 0 || 1 // aa是1 let aa = "" ?? 1 // aa是"" let aa = "" || 1 // aa是1
四、?.可选链操作符 a?.b 当a存在是返回a.b
let a = {} let aa = a?.b // aa是undefind let aa = a?.b ?? 123 // aa是123 let a = {b:1} let aa = a?.b // aa是1
其他一些取整和四舍五入简写方法:
//取整 parseInt(a,10); //Before Math.floor(a); //Before a>>0; //Before ~~a; //简写后 a|0; //简写后After //四舍五入 Math.round(a); //Before a+.5|0; //简写后After //内置值 undefined; //Before void 0; //简写后After, 快 0[0]; //简写后After, 略慢 //内置值 Infinity; 1/0; //布尔值短写法 true; //Before !0; //简写后After //布尔值短写法 false; //Before !1; //简写后After
js运算符单竖杠“|”的用法
很多朋友都对双竖杠“||”,了如指掌,因为这个经常用到。但是大家知道单竖杠吗?今天有个网友QQ问我,我的 javascript实用技巧,js小知识 , 这篇文章里面,js整数的操作运用了单竖杠,问我单竖杠是啥意思?
我看了一下之前的那篇文章,只写了用法,但是并没有解释。好吧,我现在就给大家简单的介绍一下:
之前文章,在js整数操作的时候,相当于去除小数点,parseInt
。在正数的时候相当于Math.floor()
,负数的时候相当于Math.ceil()
注:
Math.ceil()
用作向上取整。
Math.floor()
用作向下取整。
Math.round()
我们数学中常用到的四舍五入取整。
console.log(0.6|0)//0 console.log(1.1|0)//1 console.log(3.65555|0)//3 console.log(5.99999|0)//5 console.log(-7.777|0)//-7
注:除了Math的三个方法处理数字,我们还经常用parseInt()、parseFloat()、toFixed()与toPrecision() 等等。 简单解释:
toFixed方法用法如下:
100.456001.toFixed(2); //100.47 100.456001.toFixed(3); //100.456 Number.prototype.toFixed.call(100.456001,2); //100.47
缺点:用之后就会变成字符串。
toPrecision用法如下:
99.456001.toPrecision(5); //99.456 100.456001.toPrecision(5); //100.46 Number.prototype.toPrecision.call(10.456001,5); //10.456
单竖杠的运算规则
看了上面的例子,大体知道单竖杠可以进行取整运算,就是只保留正数部分,小数部分通过拿掉,但是“|0”,又是如何进行运算的呢,为什么能“|0”能达到取整的目的呢?单竖杠不是0有会是多少呢?
带着这些问题,我们看下面例子:
console.log(3|4); //7 console.log(4|4);//4 console.log(8|3);//11 console.log(5.3|4.1);//5 console.log(9|3455);//3455
这里面提到了单竖杠“|”但是没有javascript的。
好吧,我在这里公布答案吧。其实单竖杠“|”就是转换为2进制之后相加得到的结果。例如我们拿简单的举例:
3|4 转换为二进制之后011|100 相加得到111=7 4|4 转换为二进制之后100 |100 相加得到100=4 8|3 转换为二进制之后1000 |011 相加得到1011=11