zou iemand mijn dez code regel willen uitleggen? mn j=het | teken

Status
Niet open voor verdere reacties.

hellboy01

Gebruiker
Lid geworden
18 jun 2006
Berichten
333
Code:
if (i != 4 || ((Math.random() * 3) | 0) == 0)
 
Laatst bewerkt:
Het is nogal onzinnige code, ik hoop dat het voor iets leerzaams is en geen productie code

ALS 'i' niet 4 is OF random getal 0,1,2 met logical or 0 gelijk is aan 0

| logische OF
|| combinerende OF

Maar zoals ik al opmerkte kan deze code veel eenvoudiger en is er geen enkele reden voor de logische OF
 
Het wordt gebruikt als "hack" om math.random om te zetten naar een integer.

Het doet in deze situatie hetzelfde als:
Code:
(Math.random() * 3).toFixed(0)

persoonlijk vind ik zoiets:

Code:
 Math.random() < 1/3

makkelijker en duidelijker om zoiets uit te voeren
 
Laatst bewerkt:
Hi Wampier, bedankt voor je uitleg. Toch nog een vraagje, ik kan het helaas nergens vinden maar wat is het verschil tussen de beide OR-en?
 
De logische OR ( | ) is een "wiskundige" bit-niveau berekening. Je kunt er onder andere bits mee aanzetten.

bijvoorbeeld x | 7 = neem X en zet bits 1,2,3 aan (1+2+4 = 7).. een OR met 0 geeft altijd het originele antwoord (zoals boven gebruikt wordt en voert in JS impliciet een integer conversie uit.).

de argument-OR ( || ) linkt meerdere bewerkingen aan elkaar en het antwoord is geldig als een van de voorwaarden "WAAR" is.

"A=B || C=D || D=D" is "waar" want D=D is waar. De tegenhanger is AND ( && ). en is alleen waar als alles waar is.

EDIT: in volledigheid in JS moet het voorbeeld natuurlijk:

A==B etc. zijn, want voor "=" geldt een zelfde verschil tussen = en ==. = is een toewijzing/wiskundige bewerking, == is een vergelijking tussen 2 dingen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan