Мне кажется, нет. т.к. вот это получается выражение (function foo() {}), и области видимости тут не должно быть (тем более, мы говорим о JS, где область видимости не появляется в выражении или фигурных скобках).
Можно написать вот так
var a = function foo() {};
a();
и ничего не изменится. Но вот так написать мы не можем
function foo() { }()
по той причине, что это не выражение, поэтому чтобы ее сразу вызвать, мы создаем выражение при помощи скобок. Это как
{} + [] // 0
({} + []) // [object Object]
В первом случае у нас не получилось выражения, сначала у нас фигурными скобками создается блок, а потом отдельное выражение +[]. А во втором все считалось в выражении, поэтому получился объект + массив. Поэтому даже так заработает
( function foo() {}())
Не думаю, что где-то создается область видимости. т.е. мы имеем их только два - глобальную и в функции.
PS: Если я не прав коллеги, поправьте.