什么是短路表达式?

短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。这是这两个操作符的一个重要属性。

一个最简单的例子:

复制代码 代码如下:
foo = foo||bar;

这行代码是什么意思?答案:

复制代码 代码如下:
//如果foo存在,值不变,否则把bar的值赋给foo
if(!foo)
    foo = bar;

在javascript的逻辑运算中,0、""、null、false、undefined、NaN都会判定为false,而其他都为true。所以在上式的foo = foo||bar;中,||先计算第一个运算数,如果可以被转换成true,也就是表示foo已经存在有值,那么返回左边这个表达式的值,否则计算第二个运算数bar。

另外,即使||运算符的运算数不是布尔值,仍然可以将它看作布尔OR运算,因为无论它返回的值是什么类型,都可以被转换为布尔值。

当然,使用如下做法会更加严谨:

复制代码 代码如下:
if(foo)      //不够严谨
 
if(!!foo)    //更为严谨,!!可将其他类型的值转换为boolean类型

可以测试一下:
复制代码 代码如下:
var foo;
var number = 1;
var string = "string";
var obj = {};
var arr = [];
 
 
console.log(typeof(foo));  // undefined
console.log(typeof(number));  //number
console.log(typeof(string));  //string
console.log(typeof(obj));  //object  
console.log(typeof(arr));  //object
 
console.log(typeof(!!foo));  // boolean
console.log(typeof(!!number));  //boolean
console.log(typeof(!!string));  //boolean
console.log(typeof(!!obj));  //boolean
console.log(typeof(!!arr));  //boolean

利用这一点可以很好的符合,优化javascript工程一文中提到的,使脚本少运行或者不运行,以达到优化javascript的目的。但是需要注意的是,这样写帮我们精简了代码的同时,也带来了代码可读性的降低的缺点。所以比较好的做好是添加是适当的注释。

标签:
Javascript,优化技巧,短路表达式

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com

P70系列延期,华为新旗舰将在下月发布

3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。

而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?

根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。