或运营商与三元运营商

时间:2017-02-17 10:53:26

标签: javascript performance logical-operators

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

三元运营商

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

或运营商

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

谢谢!

1 个答案:

答案 0 :(得分:0)

速度不是问题,它们同样快,并且它们都不会导致代码流中的瓶颈。但是在检查条件时它们的行为略有不同。

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

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

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

这个解决方案还允许你对编码进行更精确的检查,因为javascript中的真值表可能很棘手。

我不是说这个解决方案更好,只要考虑哪种解决方案在您的情况下更具可读性。