Czy ktoś może mi wyjaśnić przykłady działania tego algorytmu?ECMA-262 7.0 GetValue (V)
GetValue (V)#
1. ReturnIfAbrupt(V).
2. If Type(V) is not Reference, return V.
3. Let base be GetBase(V).
4. If IsUnresolvableReference(V) is true, throw a ReferenceError exception.
5. If IsPropertyReference(V) is true, then
a. If HasPrimitiveBase(V) is true, then
i. Assert: In this case, base will never be null or undefined.
ii. Let base be ToObject(base).
b. Return ? base.[[Get]](GetReferencedName(V), GetThisValue(V)).
6. Else base must be an Environment Record,
a. Return ? base.GetBindingValue(GetReferencedName(V), IsStrictReference(V)) (see 8.1.1).
http://www.ecma-international.org/ecma-262/7.0/#sec-getvalue
Byłoby miło, gdyby ktoś z przykładów wyjaśnił, jak to działa. Próbowałem, ale nie zrozumiałem zbyt wiele.
Przykłady wyjaśnienie:
let a = 10, b = {name: "Unknown"};
(null, a);
(null, a.name);
(null, b);
(null, b.name);
(null, b.surname);
(null, 10);
/// etc...
to wygląda jak pseudo kod, czy masz do wdrożenia to? Podaj, co zrobiłeś ... – Hitmands
@ Hitmands Abyś mnie zrozumiał, chcę zrozumieć na prawdziwych przykładach, jak to działa. Na przykład, weźmiemy dodawanie '(" "+ Object.prototype)'. Dodatkowo, istnieje również algorytm i wywołuje GetValue (V) dla każdego operandu i chciałbym rozważyć wszystkie gałęzie możliwych przypadków w algorytmie (GetValue()). – MaximPro
Co masz na myśli mówiąc "jak to działa"? To właśnie jest algorytm *, opis działania. Czego próbowałeś, ale nie mogłeś zrozumieć? – Bergi