ibahob,
на момент выполнения строки "b = b + a;" в переменной b двойка, переменная "a" здесь используется самая внутренняя (при выполнении кода объявления переменных через var переносятся в начало функции), но значение а равно undefined, т.к. 3 ей ещё не присвоилось.
Т.е. на самом деле функция summ выполнится так:
function summ() {
var b, a; // объявили переменные, они равны undefined
b = 2;
b = b + a; // 2 + undefined
a = 3;
return b;
}