Вместо того, чтобы обертывать код в блоке try / catch, что происходит, когда вы регистрируете обработчик исключений? Очевидно, что ваш блок try / catch не перехватывает исключение, что приводит к ошибкам, зарегистрированным в Apache. Регистрируя обработчик, вы можете быть уверены, что любое неперехваченное исключение обрабатывается.
Кроме того, если вы используете пространства имен в своем приложении, убедитесь, что вы записываете \ Exception в свой блок catch (или включаете класс Exception через инструкцию использования).
Оператор группировки не уничтожает ссылки на свойства, которые провоцируют вызов метода .
Это явно указано в spec :
ПРИМЕЧАНИЕ. Этот алгоритм не применяет GetValue к результату оценки
blockquote>Expression
. Основной мотивацией для этого является то, что операторы, такие какdelete
иtypeof
, могут быть применены к заключенным в скобки выражениям.В ваших строках 4 и 5 это не скобка, а операторы (
?:
и||
), которые де-ссылаются на свойство и дают «несвязанную» функцию.
foo.bar
здесь анонимная функция.
Это может иметь смысл, если вы разделите его на разные строки:
foo = {
bar: function() {
return this;
}
}
Итак, когда вы вызываете foo.bar
, вы получаете function() { return this; }
. В строке 2 вы вызываете эту функцию напрямую (foo.bar()
), поэтому она возвращает this
, экземпляр объекта (foo
).
В третьей строке вы получаете тот же результат, потому что вы не только запрашиваете анонимную функцию, но также выполняете эту функцию:
(foo.bar); // (function() { return this; }); A reference to the function
(foo.bar)(); // (function() { return this; })(); Actually calling the function
Поскольку в последнем случае вы выполняете функцию, как вы это делали в строке 2 результат тот же (foo
).
В строках 4 и 5, однако, как сказал Берги, операторы, которые вы используете, разыгрывают их из функции, что оставляет вас с Window
, а не foo
.
(0,foo.bar)
, чтобы разбить ссылку или вызвать косвенный вызов без добавления строки. Это приводит к интересному примеру сeval
тоже :) – Benjamin Gruenbaum 11 April 2015 в 21:37