var foo = true;
function doThis() {alert("do this");}
function doThat() {alert("do that");}
// fine
if(foo) {
doThis();
doThat();
}
// fine
foo && (doThis());
// NO, syntax error
foo && (doThis(); doThat(););
这甚至可能吗?或者我根本不应该这样做?
var foo = true;
function doThis() {alert("do this");}
function doThat() {alert("do that");}
// fine
if(foo) {
doThis();
doThat();
}
// fine
foo && (doThis());
// NO, syntax error
foo && (doThis(); doThat(););
这甚至可能吗?或者我根本不应该这样做?
是的,如果你用逗号分隔函数:
foo && (bar(), baz())
这是一种糟糕的编码实践,但它对于缩小代码或代码高尔夫的目的很有用。
if (foo) {
bar();
baz();
}
变成:
foo&&(bar(),baz())
和
if (!foo) {
bar();
baz();
}
变成:
foo||(bar(),baz())
和
if (foo) {
bar();
baz();
} else {
fizz();
buzz();
}
变成:
foo?(bar(),baz()):(fizz(),buzz())
尽管变量可能会在缩小器中重命名为:
a&&(b(),c())
您可以使用逗号运算符:
foo && (doThis(), doThat());
当然,如果doThis
返回一个truthy
值,您也可以拥有:
foo && doThis() && doThat();
但这更像是;
if (foo)
if (doThis())
doThat();
但是,如果左侧没有赋值,通常不会使用这种“速记”,因为这会使代码更丑陋且可读性较差。