Or 运算符与三元运算符

Or operator vs. Ternary operator

哪段代码更快,或者更好?


三元运算符

action = typeMap[type] ? typeMap[type] : typeMap['default'];

或运算符

action = typeMap[type] || typeMap['default']

谢谢!

速度不是这里的问题,它们同样快,none 其中的 none 可能会导致您的代码流出现瓶颈。不过,它们在检查条件时的行为略有不同。

这里真正的问题是:哪一个更具可读性?如果有人(或你自己)会阅读这段代码,哪一个会更容易理解?

即使它可能不优雅,也许在某些情况下像下面这样的解决方案会更好

var action = typeMap['default'];
if (typeMap[type]) {
    action = typeMap[type];
}

考虑到 javascript 中的真相 table 可能很棘手,此解决方案还允许您对编码进行更精确的检查。

我并不是说这个解决方案更好,只是考虑在您的情况下哪个更易读。