Я часто вижу код JavaScript, который проверяет неопределенные параметры и т.д. таким образом:
if (typeof input !== "undefined") {
// do stuff
}
Это кажется расточительным, поскольку включает как поиск типов, так и сравнение строк, не говоря уже о его многословности. Это нужно, потому что undefined
можно было бы переименовать.
Мой вопрос:
как этот код лучше, чем этот подход:
if (null != input) {
// do stuff
}
Насколько я знаю, вы не можете переопределить null
, поэтому он не сломается неожиданно. И, из-за приведения типов !=
оператора, он проверяет и то, undefined
и другое null
... что часто именно то, что вы хотите (например, для необязательных параметров функции).
Тем не менее, эта форма не кажется широко распространенной, и она даже заставляет JSLint кричать на вас за использование !=
оператора зла .
Почему это считается плохим стилем?
if (null != input)
это только «Йода говорить» для говорящего на английском языке (из одного я .... uuammmmm), так что если они приравнивают к одной и той же вещи, это на самом деле просто семантика. ИМХО.