今天开始新手练习JS项目,第一题“DIV的属性控制”就碰到看不懂的代码。
this.index == oBtn.length - 1 && (oDiv.style.cssText = "");
网上搜索了一下说这段代码等同于:
if(this.index == oBtn.length - 1){
oDiv.style.cssText = "";
}
这是为什么呢?
查了犀牛书第80页,“&&”是逻辑与运算符,它在运行的时候先计算左值,如果左值为ture,再计算右值。如果左值为false,则不计算右值。这种行为被称为“短路”。
“短路”行为的效果与if语句相同,所以经常被用来代替if语句。
一般,当“&&”的右侧语句具有副作用时(赋值、递增、递减和函数调用表达式)要格外小心。
同理,“||”也具有相同“短路”,效果类似于else。