| 
	| 
	
	| 
		
	| 
			
			 
			
				04.08.2008, 16:27
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 13.06.2008 
						Сообщений: 48
					 
		
 |  |  
	| 
				Непонятные фрагменты кода
			 Здравствуйте! Помогите новичку.Мой вопрос заключается в следующем:
 мне непонятно, что мы проверяем, когда перед аргументом функции ставим оператор "!". Я часто встречал этот прием во многих функциях, но меня интересует сама логика этого условия.
 Function someFunction(arg) {
 if(!arg) {...}
 }
 я знаю что оператор "!" это противоположное значение, но бывает и так:
 
 var flash = false;
 function some() {
 if(!flash) {
 тогда что, это условие будет выполняться всегда?}
 }
 Вы объясните на что идет проверка, и в каких случаях так нужно делать.
 (P.S. Ув. администраторы, если можно я буду дополнять эту тему подобными вопросами, нежели буду "засорять" темами форум)
 |  |  
	| 
		
	| 
			
			 
			
				04.08.2008, 16:37
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 06.05.2008 
						Сообщений: 765
					 
		
 |  |  
	| В первом случае, если человек не укажет arg - arg будет undefined, соответственной !arg выдаст true и вы сможете, например, arg подставить скриптом.Во втором случае аналогично.
 |  |  
	| 
		
	| 
			
			 
			
				10.08.2008, 01:24
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 13.06.2008 
						Сообщений: 48
					 
		
 |  |  
	| 
window.onload = function()  {
someHTMLElement.onclick = function() {
//...
//...здесь какой-то код
//...
timerID = setTimeout(/*подскажите как можно обратится к этой функции в даном случае, и вообще это возможно?*/,1)
}
}
			 Последний раз редактировалось Андрей Параничев, 10.08.2008 в 02:07.
 |  |  
	| 
		
	| 
			
			 
			
				10.08.2008, 02:07
			
			
			
		 |  
	| 
		
			
			|        |  | 
					Регистрация: 21.02.2008 
						Сообщений: 1,250
					 
		
 |  |  
	| 
window.onload = function()  {
someHTMLElement.onclick = function() {
//...
//...здесь какой-то код
//...
timerID = setTimeout(arguments.callee,1)
}
}
И пожалуйста, пользуйся специальными bb-кодами для оформления листингов кода в теле сообщения. |  |  
	| 
		
	| 
			
			 
			
				10.08.2008, 19:16
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 13.06.2008 
						Сообщений: 48
					 
		
 |  |  
	| Андрей! Вы бы не могли рассказать об arguments.callee, или дать линк на инфу где можно об этом почитать. Я часто сталкиваюсь с этим свойством но не могу понять его назначение. Очень благодарен за помощь.
 |  |  
	| 
		
	| 
			
			 
			
				10.08.2008, 19:40
			
			
			
		 |  
	| 
		
			
			|        |  | 
					Регистрация: 21.02.2008 
						Сообщений: 1,250
					 
		
 |  |  
	| Макс, 
Почитайте вот эту статью , там написано про agruments и arguments.callee. В кратце - любая функция создаёт объект agruments, в котором хранятся все переданные функции параметры, и его свойство arguments.callee, в котором находится ссылка на саму себя. Это полезно для создания рекурсии в анонимной функции, например:
 
// бесконечный вызов функцией самой себя:
(function() { arguments.callee(); })();
 |  |  
	| 
		
	| 
			
			 
			
				10.08.2008, 20:05
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 13.06.2008 
						Сообщений: 48
					 
		
 |  |  
	| А вот столкнулся с такой вот проблемой. Никогда не встречал такого вот свойства:document.namespaces
 Что оно означает? Я знаю что namespaces - это пространство имен, а где и для чего его можно применить?
 |  |  
	| 
		
	| 
			
			 
			
				13.08.2008, 12:12
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 13.06.2008 
						Сообщений: 48
					 
		
 |  |  
	| Вот еще код, логика которого мне непонятна, точнее второе условие.  !oneDecimal для чего там изменяется значение? по умолчанию было false, а теперь что true? Объясните: что оно в даном случае проверяет, зачем изменять эту переменную, для чего ее используют, и в каких случаях так нужно делать?function isNumber(inputVal) {
 oneDecimal = false;
 inputStr = inputVal.toString();
 for (var i = 0; i < inputStr.length; i++) {
 var oneChar = inputStr.charAt(i);
 if (i == 0 && oneChar == "-") {
 continue;
 }
 if (oneChar == "." && !oneDecimal) {
 oneDecimal = true;
 continue;
 }
 // .....
 |  |  
	| 
		
	| 
			
			 
			
				13.08.2008, 12:36
			
			
			
		 |  
	| 
		
			
			| Флудер       |  | 
					Регистрация: 25.07.2008 
						Сообщений: 1,271
					 
		
 |  |  
	| Вообще, как я понял, хотят понять, дробное это число или целое (выставляют переменную в true, если встретят точку). Только не пойму, почему не воспользоваться (typeof inputVal=='number')? |  |  
	| 
		
	| 
			
			 
			
				13.08.2008, 12:47
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 19.02.2008 
						Сообщений: 9,177
					 
		
 |  |  
	| 
	
 
	| Сообщение от ZoNT |  
	| почему не воспользоваться (typeof inputVal=='number')? |  
	
 Ну там типа и строку можно передать.
Макс , меня, если честно, ваши вопросы в тупик ставят. Что может быть непонятного в конструкции вида "Если условие не выполняется, то что-то делаем"? |  |  |  |