akerro
g/programowanie

zagadka z JS, chce z litery 'a' zrobic litere 'b' więc:
String.fromCharCode("a".charCodeAt(0)+1)


dlaczego to samo, tylko:
String.fromCharCode("a".charCodeAt(0)++)

Nie działa?

#
occulkot

@akerro: a operator ++ nie jest przypadkiem od zwiekszenia wartosci stojacej za zmienna bez zwracania tej zmiennej? Ewentualnie moglo byc "zwroc aktualna wartosc i zwieksz wartosc zmiennej"

#
Analfabeta

@akerro: Zgaduje, że inkrementacja wykonywana jest przed metodą charCodeAt()

#
akerro

@occulkot: String.fromCharCode("a".charCodeAt(0)++) wywala błąd, nie złą wartość anyway, jakby to przypisać do zmiennej to nadal nie działa.

#
occulkot

@akerro: Sprawdzilem w konsoli - "ReferenceError" - czyli musialbys prascowac na referencji a tymczasem probujesz to wywolac na funkcji.

13:33:28.996 "a".charCodeAt(0)++ // wywala blad przez probe odwolania sie przez referencji do metody
13:33:28.999 ReferenceError: invalid assignment left-hand side
13:33:33.150 b = "a".charCodeAt(0) // przypisanie wyniku funkcji do zmiennej
13:33:33.155 97
13:33:34.891 b++ // zwieksz wartosc na referencji a zwroc wartosc biezaca
13:33:34.905 97
13:33:37.755 b // wartosc referencji jest zwiekszona
13:33:37.766 98

#
akerro

@occulkot: jednym zawołaniem zamienisz to na literę 'b'?

#
occulkot

@akerro: nie ten operator. Zeby miec jednolinikowca musisz uzywac pierwszej metody, chyba ze sobie lambe zrobisz typu
String.fromCharCore(function(x){ b = x.charCodeAt(0); b++; return b; }("a"));
Sztuka dla sztuki ;)

#
akerro

@occulkot: ale kod ;D przypomnę go sobie jak bede chcial sie wziąć za JS na powaznie ;D

a ten oszukany kod nadal nie dziala ;p

#
occulkot

@akerro: w moim jest literowka "fromCharCore" (*core :DD) powinno byuc fromCharCode.
Roznica jest w operatorach "++" zaklada zwiekszenie wartosci na referencji i zwrocenie wartosci
x++ przed zmiana wartosci (zwroc i zwieksz)
++x po zmianie wartosci (zwieksz i zwroc)

#
akerro

@occulkot: oszukana metoda, nie chce takiej :<

#