Хороший Javascript программист хорошо знает этот тест:Создать JavaScript «HasValue» Util метод
if (typeof(dummy) != 'undefined' && dummy != null && dummy != '') {
// Do stuffs
}
На самом деле этот тест убедитесь, что фиктивная переменная имеет значение. Поэтому я попытался написать эту функцию. Мои тесты случаи:
hasValue(undefined) => should returns false
hasValue(null) => should returns false
hasValue('') => should returns false
hasValue(' ') => should returns true
hasValue([]) => should returns false
hasValue({}) => should returns false
hasValue(true) => should returns true
hasValue(false) => should returns true
hasValue(0) => should returns true
hasValue(new Date()) => returns false, but should returns true ?
Вот функция:
function hasValue (v) {
if (typeof v === 'object') {
for (key in v) {
if (v.hasOwnProperty(key)) {
return true;
}
}
return false;
}
if (v === false) {
return true;
}
if (v === 0) {
return true;
}
return (typeof(v) != 'undefined' && v != null && v != '');
}
Кто-нибудь увидеть что-то не так, или какой-либо оптимизации, или, может быть, я забыл Somes случаи?
Возможно, вы хотите опубликовать это на [Обзор кода] (http://codereview.stackexchange.com/). – JCOC611
Это все «значения» кстати. Может быть, вы ищете «непустые» значения для некоторого определения «пустой»? Также обратите внимание, что 'typeof' не является функцией. –
Вы считали особые константы, такие как NaN? –