2017-02-17 40 views
-3

Какая часть кода работает быстрее или лучше?Оператор или оператор Ternary


троичный оператор

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

Спасибо, что указали, что я на самом деле не протестировал ваш ответ. Во всяком случае, спасибо за обмен. –