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')?
|
Ну там типа и строку можно передать.
Макс, меня, если честно, ваши вопросы в тупик ставят. Что может быть непонятного в конструкции вида "Если условие не выполняется, то что-то делаем"?
|
|
|
|