Wpis z mikrobloga

Czy jest jakas mozliwosc w #javascript , porownania dwoch zmiennych przy uzyciu operatora porownania zapisanego jako string?

Np. mam

let var1 = 1;
let var2 = 2;
let operator = '>';
I chce zrobic cos na zasadzie:

if(var1 operator var2)
Bez definiowania tablic operatorow/switchy i funkcji porownan.

#html
  • 18
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@lathrus: w sumie zapomniałem że istnieje coś takiego jak eval. Człowiek za bardzo się przyzwyczaił do pracy z porządnym kodem, żeby pamiętać o czymś takim xD
  • Odpowiedz
@dziadzio: generalnie, jeśli używasz evala w taki sposób, to zabijasz i czytelność, i (zwłaszcza) wydajność. W imię wyimaginowanego uproszczenia kodu. Więc...
  • Odpowiedz
@Marmite: Mysle ze to lepsze rozwiazanie niz definiowanie tablicy operatorow i funkcji porownan - zarowno dla czytelnosci jak i wydajnosci. A tak wyszlo ze operatory musza byc przekazywane do funkcji.
  • Odpowiedz
@dziadzio: o dziwo, tak. Takie funkcje mają to do siebie, że przeglądarka zna ich zachowania już na etapie kompilacji i może je bardzo mocno zoptymalizować. Wstawienie do funkcji evala sprawia, że silnik JSowy nie może już zrobić ŻADNYCH założeń dotyczących danej funkcji, bo w teorii może ona wykonać w tym evalu dowolny kod. A zatem wszystkie optymalizacje szlag trafia.

Nie zawsze najkrótszy fragment kodu będzie tym najlepszym.
  • Odpowiedz
Nie zawsze najkrótszy fragment kodu będzie tym najlepszy


@Marmite: to prawda ale rozwiazanie tego problemu definicja na nowo wszystkich operatorow i funkcji mija sie z celem, to zwykle marnowanie zasobow i strzelanie do muchy z armaty.
  • Odpowiedz
@dziadzio:

bez funkcji porównań

Są gotowe metody w Array.prototype i String.prototype ładujesz to jako callback i sprawa załatwiona. Będzie trudno bez nich robić kod w
  • Odpowiedz