2016-03-23 3 views
0

В Javascript === сравнивает тип, а также значение, где == просто сравнивает значение. В следующем примере есть ли преимущество использования === по сравнению с ==?Преимущества «string» === «string» с типом

function roll(sides){ 
    if (typeof sides === "undefined") { 
     sides = 6; 
    } 
    var result = Math.random() ; 
    result = result * sides ; 
    result = Math.floor(result) ; 
    return result ; 
}; 

Согласно документации typeof это будет только когда-либо возвращать строку. Это заставляет меня думать, что использование === не дает никаких преимуществ в этой ситуации.

Я представляю, кто из тех, кто написал учебник, я использую === по привычке?

+0

Ответили ссылкой на комментарий CodeCaster. [В чем причина использования === вместо == с typeof в Javascript?] (Http://stackoverflow.com/questions/3804005/whats-the-reason-to-use-instead-of-with-typeof -in-javascript) – dyllandry

+0

'==' также сравнивает тип. Это то, как они реагируют, когда типы не совпадают, что делает их разными. –

ответ

1

В некоторых случаях === может дать вам небольшое (обычно незначительное) преимущество в производительности за ==.

Это также безопаснее использовать ===, именно потому, что он также проверяет, идентичен ли тип.

Для примера рассмотрим следующее:

  • TRUE === 1 и FALSE === 0 оба FALSE
  • TRUE == 1 и FALSE == 0 оба TRUE.

В большинстве случаев вы хотите, чтобы первое, а не последнее поведение.

+0

При совпадении типов не должно быть разницы в производительности. –

+0

@LyeFish: Мне бы хотелось увидеть некоторые ориентиры для этого :-) –

+0

Просто посмотрите на алгоритмы, которые они используют. Когда типы совпадают, алгоритмы идентичны. Конечно, из-за определенных оптимизаций могут быть ошибки браузера, но это может работать в любом случае. –