【发布时间】:2016-02-25 09:18:57
【问题描述】:
据此link,我们知道
console.log(false ** false == true); // true
console.log(false ** true == false); // true
console.log(true ** false == true); // true
console.log(true ** true == true); // true
我认为我们可以在 ES7 中实现 Converse implication 到 exponentiation operator。
给定函数f()和g()的返回值为boolean。所以我们可以使用这个简单的代码
if (g() ** f()) {
//
}
替换
if ((g() && f()) || !f()) {
//
}
一些测试代码是here。在 ES7 下是否有效?
【问题讨论】:
-
就算是有效的,用它有什么意义呢?我看不出它使表达更有效,也更清晰。
-
改用
g() || !f(),它的可读性更强。试试看:[[false, false], [false, true], [true, false], [true, true]].map(function(a) { return a[0] || !a[1]; })
标签: javascript boolean-logic boolean-expression short-circuiting ecmascript-2016