Wpis z mikrobloga

#javascript #programowanie
hej - jak jest operator OR to on pod uwagę "weźmie" wszystkie wyrażenia prawda ?, a nie tylko dwa
bo mam:

if ((p.types[0] || p.types[1] || p.types[2]).test(obj.contents))

Przetestowałem:
type0 false
type1 false
type2 true
obj.contents: Słomki do napojów
75 szt./1 opak.

I kurde nie wchodzi - a musi ! :( Czy to moje środowisko zawodzi ?
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Solidly: @tell_me_more:

zmodyfikowałem to w ten sposób i jest OK;
if (p.types[0].test(obj.contents) || p.types[1].test(obj.contents) || p.types[2].test(obj.contents))

piszę dla gazetki marketingowej (takiej z produktami w markecie) - skrypt sprawdzający ceny przeliczeniowe.
  • Odpowiedz
@zulik: znaczy te types[0] to były nie wartości logiczne jak wcześniej pisałeś, tylko jakieś wyrażenia regularne? No to nie możesz tak rozdzielać (wyrażenie regularne 1 || wyrażenie regularne 2 || wyrażenie regularne 3).test(cośtam).

Operator || spodziewa się wartości logicznych jak dostanie coś innego to konwertuje w durny sposób. To tak, jakbyś zrobił jabłko + deszcz + 3 = ?

Możesz za to napisać jedno wyrażenie regularne które sprawdza czy wartość
  • Odpowiedz