rtivital
10/23/2015 - 12:05 PM

Проверка типов

Проверка типов

// Проверка числа
var isNumber = function(num) {
	// Функция parseInt вовращает число или NaN
	// NaN будет возвращено, когда невозможно привести num к числу,
	// например, parseInt('j23'), parseInt({}), parseInt(['a', 2, 3])

	// число вернется, когда parseInt сможет преобразовать num к числу,
	// например, parseInt('12string'), parseInt(12), parseInt([12, 13, 14])
	// всё это вернет число 12
	if (isNaN(parseInt(num))) {
		return false;
	}

	return typeof num === 'number';
};


// Проверка существования непустой строки
var isString = function(str) {
	if (typeof str === 'string') {
		if (str.length > 0) {
			return true;
		}
	}
	return false;
};


// Проверка существования непустой строки без whitespace символов:
// пробел, tab (/t), перенос строки (/n)
var isEmptyString = function(str) {
	if (typeof str === 'string') {
		if (str.trim().length > 0) {
			return false;
		}
	}
	return true;
};


// Проверка объекта
var isObject = function(obj) {
	// возвращать typeof 'object' неправильно,
	// так как typeof null тоже 'object'
	return typeof obj === 'object' && obj !== null;
};


// Проверка массива
var isArray = function(arr) {
	// метод для определения массива был добавлен в ES5
	return Array.isArray(arr);
};


// Проверка непустого массива
var isEmptyArray = function(arr) {
	// проверить с помощью arr.length не получится,
	// так как длину массива можно установить arr.length = 4

	// или установить отдельный элемент arr[4] = 'item'
	// в этом случае длина массива будет равной 5
	// а сам массив будет содержать [undefined × 4, "item"]

	// нужно использовать метод join для преобразования массива в строку
	// и работать уже со строкой, например, с помощью функций isString 
	return !isString(arr.join(''));

	// или isEmptyString в зависиости от целей
	return isEmptyString(arr.join(''));
};