11.2.3 Function calls

2010-05-16

CallExpression : MemberExpression Arguments
CallExpression : CallExpression Arguments

Both are evaluated the same:

Code: (Meta Ecma)
function evaluate(MemberExpression Arguments) {
var ref = evaluate(MemberExpression);
var func = GetValue(ref);
var argList = evaluate(Arguments); // returns List
if (Type(func) != 'object') throw TypeError;
if (!IsCallable(func)) throw TypeError;
var thisValue = undefined;
if (Type(ref) == 'reference') {
if (IsPropertyReference(ref)) thisValue = GetBase(ref);
else thisValue = GetBase(ref).ImplicitThisValue(); // ref is environment record
} // else ref is undefined, so thisValue is undefined as well
return func.[[Call]](thisValue, argList);
}

Native functions will never return a Reference. Host objects (custom by the implementation) may return a Reference but if they do, they must always return a non-strict Reference.