Непонятные фрагменты кода
Здравствуйте! Помогите новичку.
Мой вопрос заключается в следующем: мне непонятно, что мы проверяем, когда перед аргументом функции ставим оператор "!". Я часто встречал этот прием во многих функциях, но меня интересует сама логика этого условия. Function someFunction(arg) { if(!arg) {...} } я знаю что оператор "!" это противоположное значение, но бывает и так: var flash = false; function some() { if(!flash) { тогда что, это условие будет выполняться всегда?} } Вы объясните на что идет проверка, и в каких случаях так нужно делать. (P.S. Ув. администраторы, если можно я буду дополнять эту тему подобными вопросами, нежели буду "засорять" темами форум) |
В первом случае, если человек не укажет arg - arg будет undefined, соответственной !arg выдаст true и вы сможете, например, arg подставить скриптом.
Во втором случае аналогично. |
window.onload = function() { someHTMLElement.onclick = function() { //... //...здесь какой-то код //... timerID = setTimeout(/*подскажите как можно обратится к этой функции в даном случае, и вообще это возможно?*/,1) } } |
window.onload = function() { someHTMLElement.onclick = function() { //... //...здесь какой-то код //... timerID = setTimeout(arguments.callee,1) } } И пожалуйста, пользуйся специальными bb-кодами для оформления листингов кода в теле сообщения. |
Андрей! Вы бы не могли рассказать об arguments.callee, или дать линк на инфу где можно об этом почитать. Я часто сталкиваюсь с этим свойством но не могу понять его назначение.
Очень благодарен за помощь. |
Макс,
Почитайте вот эту статью, там написано про agruments и arguments.callee. В кратце - любая функция создаёт объект agruments, в котором хранятся все переданные функции параметры, и его свойство arguments.callee, в котором находится ссылка на саму себя. Это полезно для создания рекурсии в анонимной функции, например: // бесконечный вызов функцией самой себя: (function() { arguments.callee(); })(); |
А вот столкнулся с такой вот проблемой. Никогда не встречал такого вот свойства:
document.namespaces Что оно означает? Я знаю что namespaces - это пространство имен, а где и для чего его можно применить? |
Вот еще код, логика которого мне непонятна, точнее второе условие. !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; } // ..... |
Вообще, как я понял, хотят понять, дробное это число или целое (выставляют переменную в true, если встретят точку). Только не пойму, почему не воспользоваться (typeof inputVal=='number')?
|
Цитата:
Макс, меня, если честно, ваши вопросы в тупик ставят. Что может быть непонятного в конструкции вида "Если условие не выполняется, то что-то делаем"? |
Часовой пояс GMT +3, время: 17:48. |