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