2017-02-17 240 views
-3

哪一段代码更快,或只是更好?或运营商与三元运营商


三元操作符

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

或者运营商

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

谢谢!

+3

[赛马](https://ericlippert.com/2012/12/17/performance-rant/) – Sayse

+0

他们有区别。 – user7393973

+3

http://softwareengineering.stackexchange.com/questions/82593/javascript-ternary-operator-vs –

回答

0

速度在这里不是问题,它们同样快速,它们都不会导致代码流的瓶颈。虽然检查条件,他们有一个稍微不同的行为。

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

即使它可能不是优雅,也许像一个解决方案在某些情况下可以更好地

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

该解决方案还允许你做的codition更精确的检查,因为真相在javascript中的表可能会很棘手。

我并不是说这个解决方案更好,只是考虑哪一个更适合您的情况。

+0

我认为你是对的。非常感谢。 – OBellon

+0

我完全错了,用不同的值对它进行了测试,结果仍然相同。 – AymDev

+0

谢谢你指出,我其实并没有测试你的答案。无论如何,谢谢你的分享。 –