Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Непонятные фрагменты кода (https://javascript.ru/forum/misc/1512-neponyatnye-fragmenty-koda.html)

Макс 04.08.2008 16:27

Непонятные фрагменты кода
 
Здравствуйте! Помогите новичку.
Мой вопрос заключается в следующем:
мне непонятно, что мы проверяем, когда перед аргументом функции ставим оператор "!". Я часто встречал этот прием во многих функциях, но меня интересует сама логика этого условия.
Function someFunction(arg) {
if(!arg) {...}
}
я знаю что оператор "!" это противоположное значение, но бывает и так:

var flash = false;
function some() {
if(!flash) {
тогда что, это условие будет выполняться всегда?}
}
Вы объясните на что идет проверка, и в каких случаях так нужно делать.
(P.S. Ув. администраторы, если можно я буду дополнять эту тему подобными вопросами, нежели буду "засорять" темами форум)

Snipe 04.08.2008 16:37

В первом случае, если человек не укажет arg - arg будет undefined, соответственной !arg выдаст true и вы сможете, например, arg подставить скриптом.
Во втором случае аналогично.

Макс 10.08.2008 01:24

window.onload = function()  {
someHTMLElement.onclick = function() {
//...
//...здесь какой-то код
//...
timerID = setTimeout(/*подскажите как можно обратится к этой функции в даном случае, и вообще это возможно?*/,1)
}
}

Андрей Параничев 10.08.2008 02:07

window.onload = function()  {
someHTMLElement.onclick = function() {
//...
//...здесь какой-то код
//...
timerID = setTimeout(arguments.callee,1)
}
}


И пожалуйста, пользуйся специальными bb-кодами для оформления листингов кода в теле сообщения.

Макс 10.08.2008 19:16

Андрей! Вы бы не могли рассказать об arguments.callee, или дать линк на инфу где можно об этом почитать. Я часто сталкиваюсь с этим свойством но не могу понять его назначение.
Очень благодарен за помощь.

Андрей Параничев 10.08.2008 19:40

Макс,
Почитайте вот эту статью, там написано про agruments и arguments.callee. В кратце - любая функция создаёт объект agruments, в котором хранятся все переданные функции параметры, и его свойство arguments.callee, в котором находится ссылка на саму себя. Это полезно для создания рекурсии в анонимной функции, например:
// бесконечный вызов функцией самой себя:
(function() { arguments.callee(); })();

Макс 10.08.2008 20:05

А вот столкнулся с такой вот проблемой. Никогда не встречал такого вот свойства:
document.namespaces
Что оно означает? Я знаю что namespaces - это пространство имен, а где и для чего его можно применить?

Макс 13.08.2008 12:12

Вот еще код, логика которого мне непонятна, точнее второе условие. !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;
}
// .....

ZoNT 13.08.2008 12:36

Вообще, как я понял, хотят понять, дробное это число или целое (выставляют переменную в true, если встретят точку). Только не пойму, почему не воспользоваться (typeof inputVal=='number')?

Kolyaj 13.08.2008 12:47

Цитата:

Сообщение от ZoNT
почему не воспользоваться (typeof inputVal=='number')?

Ну там типа и строку можно передать.

Макс, меня, если честно, ваши вопросы в тупик ставят. Что может быть непонятного в конструкции вида "Если условие не выполняется, то что-то делаем"?


Часовой пояс GMT +3, время: 18:40.