Статьи

Сокровища Techy # 1: Feelin ‘Пусто

Techy Treasures — это новая регулярная функция, где мы будем публиковать советы, рекомендации и фрагменты кода для веб-разработчиков. Это не пузыри голубого неба, это твердые, проверенные идеи, которые вы можете использовать в дикой природе с уверенностью.

И для начала, аккуратная маленькая функция, которая проверяет, является ли переменная пустой, вдохновленная функцией PHP с тем же именем :

function empty(data)
{
	if(typeof data == 'undefined' || data === null) { return true; }
	else if(typeof data == 'string' && (data === '0' || data.replace(/^s+|s+$/g, '') === '')) { return true; }
	else if(typeof data == 'number' && data === 0) { return true; }
	else if(typeof data == 'boolean' && data === false) { return true; }
	else if(typeof data == 'object')
	{
		if(data instanceof Array && data.length == 0) { return true; }
		else
		{
			var n = 0;
			for(var i in data)
			{
				if(!data.hasOwnProperty(i)) { continue; }
				n++;
			}
			if(n == 0) { return true; }
		}
	}
	return false;
}

Таким образом, переменная считается пустой, если она:

  • не определено
  • null
  • строка, и ее значение равно "0"
  • число, и его значение равно 0
  • логическое значение, и его значение false
  • массив, и он не имеет значений
  • объект, и он не имеет перечисляемых свойств

Это работает для любой переменной, например, используемой как условие:

 if(!empty(data)) 
{
	//data is not empty
}

Вы даже можете передать возвращаемое значение другого процесса, благодаря (как всегда!) Способности JavaScript обрабатывать почти все в качестве аргумента:

 if(!empty(function()
{
	//do some process and return a value
}))
{
	//return value was non-empty
}

Я нашел его особенно полезным для проверки аргументов функции, например, простой функции быстрого доступа для получения ссылок на элементы:

 function get(id)
{
	return document.getElementById(id);
}

Но что, если параметр idnull Мы можем проверить все эти возможности с помощью одного оператора, а затем соответствующим образом обработать ситуацию:

 function get(id)
{
	if(empty(id)) { return null; }
	return document.getElementById(id);
}

И все — аккуратный, простой и элегантный метод проверки любой переменной.

До скорой встречи еще один Techy Treasure!