Очем вы говорите, какая проверка функции (
bar && bar())?
var foo = function() {
return bar && bar(); //error: Undefined variable: bar
};
// анализ кода приостановлен!
alert(foo());
alert(1);
Вариант лучше, вернется
undefined и анализ кода продолжится:
var foo = function() {
if (typeof bar !== 'undefined')
return bar();
};
alert(foo()); //undefined
alert(1); //1
Если уж хотите использовать этот оператор для проверки функции, то только так (вернется булево значение):
var foo = function() {
return typeof bar !== 'undefined' && bar();
};
alert(foo()); //0
alert(1); //1
Переменная всегда всегда должна быть
объявлена или
инициализирована:
var i;
alert(i && i);
alert(1);
var i = 0;
alert(i && i);
alert(1);
Иными словами, если переменная не объявлена и используется в к.л. выражении это приводит к ошибке парсинга и дальнейший анализ кода не производится!
Поэтому перед тем как применять оператор
&& убедитесь, что переменная или функция объявлены и доступны в текущем скопе области видимости.