我看过这些行代码。
this.tween && this.tween.kill(),
this.tween = TweenMax.to(object, 1, {
...
})
这是
的简写吗if(this.tween){
this.tween.kill();
}
this.tween = TweenMax.to(object, 1, {
...
})
谢谢;)
最佳答案
是的,两者在执行上是等价的。
function test(value) {
console.log(value);
value && console.log("\texecute using AND");
if (value) console.log("\texecuted using if");
}
test(true);
test(false);
test("string");
test(""); //empty string
test(0);
test(null);
test(undefined);
test(1);
test({});
但是,尽管如此,这并不是 JavaScript 的惯用用法。所以你可能不应该使用这个结构,因为它会让其他开发人员望而却步。您的示例很好地说明了这一点,代码看起来像
function f (condition) {
condition && one(),
two();
}
function one() {
console.log("one");
}
function two() {
console.log("two")
}
f(false);
f(true);
这确实有效
function f(condition) {
if (condition) {
one();
}
two();
}
因此,one()
会执行几次,而 two
会一直执行。但是,在不知道优先级规则的情况下,both one()
和 two()
似乎会有条件地执行。这是一个很容易犯的错误,如果是复杂的条件和逻辑,则更容易犯此错误
person.account.moneyAmount > 0 && creditor.getDebt(person).moneyOwed > 0 && person.account.moneyAmount > creditor.getDebt(person).moneyOwed && (deductTaxes(payAndReturnAmount(person, creditor)), printStatement()), printHello()
这只是稍微夸大了一点,但完全有可能以类似的情况结束。如果您的代码像单个条件和单个操作一样简单,那么使用内联条件与使用 if
语句
condition && action()
if (condition) action()
^^
"extra" characters __||
关于javascript - "if"双符号速记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55585610/