最近,我注意到,在两个函数之间放置一个或运算符,只有当运算符的第一边是 false 时才会运行第二个函数。使用它代替 if 语句是否安全?
示例:
function a(){ return Math.random() >= 0.5; }
function b(){ console.log("foo"); }
使用
!a() || b();
与
具有相同的行为if( a() ) b();
我的问题是:使用这种语法是否安全?有例外吗?
答案 0 :(得分:8)
是的,依靠这一点是安全的(虽然可读性可以辩论并且取决于确切的用例)。
此行为称为"short-circuit evaluation",是许多编程语言的一项功能。见Does JavaScript have "Short-circuit" evaluation?