首页 > Web开发 > 详细

js短路表达式

时间:2019-03-07 17:16:52      阅读:206      评论:0      收藏:0      [点我收藏+]

今天碰见个题目,感觉短路表达式很好用。

题目:

技术分享图片
定义一个计算圆面积的函数area_of_circle(),它有两个参数:

  r: 表示圆的半径;
  pi: 表示π的值,如果不传,则默认3.14

  function area_of_circle(r, pi) {

   }
技术分享图片

我的写法: 

技术分享图片
if(arguments.length>=2)
{
return pi*r*r;
}
else if(arguments.length==1)
{
return 3.14*r*r;
}
else return false;
技术分享图片

别人写法:

return r*r*( arguments.length >= 2 ? pi : 3.14 );

大神写法:

return r * r * (pi || 3.14);

短路表达式知识补充:

1、逻辑与 && 的运算方式

var a = 1 && 2;

console.log(a); //返回的结果为 2

如果逻辑与运算符左边的值布尔转换后为true,那么返回右边的值(不管右边的值是真还是假)。

 

var a = false && 2;

console.log(a); //返回的结果为 false

如果逻辑与运算符左边的值布尔转换后为false,那么返回左边的值,但是当逻辑与的左边为 null/NaN/undefined ,结果就会得到null/NaN/undefined。

 

2、逻辑或 || 的运算方式

如果逻辑或运算符左边的值布尔转换后为false,那么返回右边的值(不管右边的值是真还是假)。

如果逻辑或运算符左边的值布尔转换后为true,那么返回左边的值,如果两个操作数都是是null(NaN/undefined),返回null(NaN/undefined)

技术分享图片
var a = false || 2;

console.log(a); //返回的结果为2

var a = true || 2;

console.log(a); //返回的结果为 true
技术分享图片

 3.短路表达式实际应用补充(2018-8-14)

(1)正则表达式
v => !v || /^([0-9]{7,18})|(0?(13|14|15|17|18|19)[0-9]{9})$/.test(v) || ‘格式错误‘,
前边为true则不再执行后边的,前边为false则继续往后执行。
 
(2)if的简化
技术分享图片
vm.querySelObj[key] && (params[key] = vm.querySelObj[key]);

相当于 a&&(b=1);

 a等于true则执行b=1,a=false则不执行b=1.用if写:if(a=true){b=1}
 
技术分享图片
 

js短路表达式

原文:https://www.cnblogs.com/ckAng/p/10490162.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!