JavaScript短路表达式
分类:实例代码
JavaScript短路表达式属于前端实例代码,有关更多实例代码大家可以查看。
JavaScript标准的概念中,并没有短路表达式概念。
只是代码实际表现和咱们平常说的“短路”类似,所以就有了这么一个名字。
下面就对它做一下简单介绍,需要的朋友可以做一下参考。
短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。这是这两个操作符的一个重要属性。
代码实例:
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短路表达式就介绍到这了。