Сообщение от Zeroglif
|
На выходе будет значение переменной, т.к. это экспрешн стэйтмент. Ты если про алерт пишешь, то вытаскивать выражение из вызова алерта нельзя, иначе получим значение.
|
Ай, не доглядел, действительно:
Сообщение от ECMA-262-3 12.4. Expression Statement
|
1. Evaluate Expression.
2. Call GetValue(Result(1)).
|
Но, я хотел показать основную идею - промежуточного значения типа Reference; пример ошибочный был, да.
В alert-e всё ещё Reference Type, и только потом будет получено значение.
Сообщение от Zeroglif
|
Точнее ожидает объект, ещё точнее ожидает callable объект, иначе ошибка. Какое именно выражение стоит слева и будет ли оно вычислено в значение Reference Type это как бы важно только с точки зрения 'this'.
|
Ну да, если более точно, то так, конечно.
Сообщение от Zeroglif
|
Неа, резолвится левая часть и то, если там идентификатор только.
|
Да, и вправду, тоже ошибся. Только
PrimaryExpression : Identifier резолвится.
А
MemberExpression . Identifier, вычисляется по своему алгоритму, где будет отрезолвен
MemberExpression (на этапе
PrimaryExpression : Identifier), получено его значение, получено значение
Identifier, которое эквивалентно
<identifier-string>, и возвращено
новое значение типа Reference c базой
ToObject(значение MemberExpression) и именем свойства
ToString(значение Identifier).
Спасибо, что поправил
Это важные замечания.