
Программируя на JavaScript я очень часто использую замыкания (а кто их не использует?). Штука, безусловно, очень удобная и полезная. Правда есть несколько неудобных моментов, например, в теле функции для которой создается замыкание (внутренняя функция) нельзя использовать указатель this. Точнее использовать его можно, но указывает он на контекст внутренней функции, а очень часто хочется обратится к контексту внешней (функции). Обычно, я из таких ситуаций выхожу следующим образом.

В последнее время очень часто приходится сталкиваться с SPL классами в PHP. Не то чтобы они мне не нравились, но работать с ними не всегда удобно. Сегодня наткнулся на проблему с указателями в DirectoryIterator. Ее суть хорошо демонстрирует следующий код.

Сегодня копался в коде jQuery и обратил внимание на то каким образом осуществляется проверка числа на NaN. Вместо того, чтобы использовать стандартную функцию isNaN() Johng Resig преобразует число к строке и сравнивает его со строкой ‘NaN’.
Я подумал, что раз используется такой странный способ, то тому есть свое логическое объяснение. Первое, что пришло мне на ум — выигрыш в скорости, но как оказалось это совершенно не так.

Программируя на javascript никогда не знаешь когда встанешь на очередную граблю. Иногда складывается впечатление, что в языке больше плохого чем, хорошего.
Например, в JS есть такое значение — NaN расшифровывается как Not A Number. Обычно это значение возвращается при ошибке выполнения операций с числами.

Я очень люблю язык JavaScript, на мой взгляд его преимущества с лихвой покрывают многочисленные недостатки. Но чтобы писать хорошие программы на этом языке нужно четко понимать какие опасности в нем таятся.
Одна из них заключается в том, что синтаксис JS не требует обязательного использования точки с запятой для разделения конструкций языка, но при этом на этапе выполнения недостающие символы расставляются автоматически.