Często widzę kod JavaScript, który sprawdza niezdefiniowane parametry w ten sposób:
if (typeof input !== "undefined") {
// do stuff
}
Wydaje się to trochę marnotrawstwem, ponieważ obejmuje zarówno wyszukiwanie typu, jak i porównywanie ciągów, nie mówiąc już o szczegółowości. Jest to potrzebne, ponieważ undefined
można go zmienić.
Moje pytanie brzmi: w
jaki sposób ten kod jest lepszy od tego podejścia:
if (null != input) {
// do stuff
}
O ile mi wiadomo, nie można na nowo zdefiniować null
, więc nie pęknie niespodziewanie. Z powodu przymusu !=
operatora operator sprawdza to zarówno undefined
i null
... co często jest dokładnie tym, czego chcesz (np. Opcjonalnymi parametrami funkcji).
Jednak ta forma nie wydaje się powszechna, a nawet powoduje, że JSLint krzyczy na ciebie za użycie złego !=
operatora.
Dlaczego jest to uważane za zły styl?
if (null != input)
to tylko „Yoda Speak” dla anglojęzycznego (jednego z nich jestem… uuammmmm), więc jeśli równa się to samo, to tak naprawdę jest to tylko semantyka. MOIM ZDANIEM.