Vraag over JS functie code

Pagina: 1
Acties:
  • 2.191 views

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
Beste programmeurs, IT-ers,

Ben bezig met het leren van JS maar kan een code maar niet begrijpen.
Het gaat namelijk om een functie-code dat macht verheft.

Ik snap de logica van de code in de functie-block niet.
Kan iemand mij dit verduidelijken? Van Googlen werd ik niet wijzer van.

Onderstaande kun je toch ook makkelijker uitvoeren met de Math.pow() methode of zie ik het verkeerd?

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
function pow (x, y) { 

let total = 1 ;

for (let i = 0 ;  i < y ;  i++) {
  
    total *= x ;
    }
    return total ;

}

console.log(pow(3, 3)) ;  // 27

[ Voor 1% gewijzigd door RobIII op 02-09-2020 19:35 . Reden: Code tags toegevoegd ]

Beste antwoord (via Area op 20-10-2020 02:13)


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Area schreef op dinsdag 20 oktober 2020 @ 01:31:
Waar staat die - voor eigenlijk?
Gewoon basisschool aftrekken. IndexOf returned een getal ;) Vervolgens doen ze wat truukjes of te kijken of (wat ik vermoed) een e-mailadres "geldig" is (volgens hun definitie van "geldig" dan).

Er staat dus (min-of-meer):
Als de positie van het puntje MINUS de positie van het apenstaartje kleiner is dan twee OF de positie van het puntje is groter dan de ingevoerde lengte MINUS drie...
Nou, gooi daar maar eens wat test-strings tegenaan en kijk wat 't doet...

Ik weet niet waar je deze ellende vandaan hebt maar het is ont-zet-tend slechte code. Zoals je zelf al merkt legt de code zichzelf niet bepaald uit en daarbij klopt er werkelijk geen vierkant hol van heel die check. Voor 't voorbeeld is 't misschien nog ok, maar een emailadres-validatieroutine mag je dit absoluut niet noemen.

[ Voor 80% gewijzigd door RobIII op 20-10-2020 02:07 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Alle reacties


Acties:
  • 0 Henk 'm!

  • Jivebunny
  • Registratie: November 2010
  • Niet online

Jivebunny

Fail to plan. Plan to fail.

Wat je kan doen is dit scriptje door een debugger draaien. Weet niet welke IDE je gebruikt, maar dan kan je er stap voor stap doorheen (breakpoints), en dan zie je wat de waardes doen. Je kan dan bijvoorbeeld tussentijds zien wat er in de for loop gebeurt en bijvoorbeeld met andere waarden spelen waardoor je makkelijker kan zien wat er met x en wat er met y gebeurt.

Ik kan het op zich wel uitleggen, maar dit is denk ik leerzamer.

EDIT: Oh Savage heeft het al uitgelegd haha. Math.pow() is makkelijker maar dit gaat denk ik meer om de loops zelf ja.

[ Voor 12% gewijzigd door Jivebunny op 02-09-2020 17:35 ]

Pixel 9 Pro XL | NAS: HP Gen8 e3-1265L v2 16GB 12TB unRAID 6.9.2 | D: Ryzen 5600x 16GB 3000mhz RX 6800 XT MB Acer 27" IPS 144hz | Suzuki Swift 1.2 (2013)


Acties:
  • +1 Henk 'm!

  • SavageNL
  • Registratie: November 2001
  • Laatst online: 17-09 06:54
Waar heb je de code vandaan? Dit ziet er idd uit als iets wat makkelijker kan met Math.pow, maar als je bij het hoofdstuk loops aangekomen bent van een cursus dan leer je niets van Math.pow maar wel van dit stukje code :).

Voor wat de code doet: het is een loop, de body van de for wordt y keer uitgevoerd:
code:
1
2
3
for ([initiele assignment]; [conditie, zolang dit waar is wordt de body uitgevoerd]; [increment na iedere iteratie]) {
  // body
}



total *= x is hetzelfde als total = total * x

Dus pow(5, 4) =>
total = 1;
total *= 5;
total *= 5;
total *= 5;
total *= 5;
==
1 * 5 * 5 * 5 * 5
==
Math.pow(5, 4).


Waarschijnlijk hetzelfde punt als waar je fibonacci gaat krijgen bij recursieve functies. Dat is een goede manier om te leren wat het concept is maar fibonacci recursief uitrekenen is niet echt snel in de meeste talen.

[ Voor 8% gewijzigd door SavageNL op 02-09-2020 17:37 ]


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
Ik gebruik Atom. De code heb ik van een YT tutorial.

Wat ik vaag vind is wat de i (iterator) doet en de conditie i < y ?

Want met loops ben ik gewend, qua visualisatie, dat de iterator door de data van een object literal of een array gaat.

[ Voor 65% gewijzigd door Area op 02-09-2020 17:52 ]


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
i vermenigvuldigt dus het ingegeven argument x (5), aantal keren (4) met het ingegeven argument y.

for loop gaat als volgt;

1 * 5 = true (eerste iteratie);
1 * 5 * 5 = true (tweede iteratie) ;
1 * 5 * 5 * 5 = true (derde iteratie);
1 * 5 * 5 * 5 * 5 = true (vierde iteratie);

Hierna false;

En de uitkomst wordt opgepot in total.

[ Voor 5% gewijzigd door Area op 02-09-2020 19:05 ]


Acties:
  • 0 Henk 'm!

  • Vihaio
  • Registratie: November 2006
  • Laatst online: 16-09 23:39
Nee, i vermenigvuldigt niks. i is er in dit geval alleen maar om te kijken hoe vaak het stukje tussen de {} uitgevoerd moet worden. Dit stuk dus:
code:
1
total *= x ;

als het loopje wordt uitgevoerd gebeurt dat in de volgende stapjes:

1. Er wordt een waarde gezet in het eerste deel tussen de haakjes (i krijgt de waarde 0)
2. Er wordt naar het tweede deel tussen de haakjes gekeken en als de expressie die daar staat waar is, wordt de bovenstaande code uitgevoerd. (zolang i kleiner is dan y) Als dat niet zo is wordt dat stuk code overgeslagen.
3. De code wordt uitgevoerd
4. Daarna wordt het derde stuk tussen de haakjes uitgevoerd (i wordt 1 groter gemaakt)
5. Dan wordt stap twee weer uitgevoerd.


De waarde van i wordt in het voorbeeld in je startpost dus nooit hoger dan 2.

[ Voor 6% gewijzigd door Vihaio op 02-09-2020 18:59 ]


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
Ik heb mij verkeerd verwoord.

Bedoel dat i doorgaat zolang het de waarde van y (4) bereikt.

Acties:
  • 0 Henk 'm!

  • Vihaio
  • Registratie: November 2006
  • Laatst online: 16-09 23:39
Ah ja, dan klopt dat inderdaad wel :)

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Area schreef op woensdag 2 september 2020 @ 17:22:
Onderstaande kun je toch ook makkelijker uitvoeren met de Math.pow() methode of zie ik het verkeerd?
Draai het voor de grap eens om, leg eens in pseudo code uit wat Math.pow doet, dan kom je op iets soortgelijks als wat je niet snapt uit :)

Acties:
  • 0 Henk 'm!

  • SavageNL
  • Registratie: November 2001
  • Laatst online: 17-09 06:54
Area schreef op woensdag 2 september 2020 @ 17:37:
Wat ik vaag vind is wat de i (iterator) doet en de conditie i < y ?

Want met loops ben ik gewend, qua visualisatie, dat de iterator door de data van een object literal of een array gaat.
Ik weet niet of ik het nu makkelijker of moeilijker ga maken, maar de structuur van een for-loop is in principe meer conventie dan verplicht:
code:
1
2
3
4
for (let i = 0; i < 10; i++) console.log(i);
let i = 0; for (; i < 10; i++) console.log(i);
let i = 0; for (; i < 10; ) console.log(i++);
let i = 0; for (; ; ) { console.log(i); if (i < 10) break; }

Deze doen allemaal hetzelfde.

Voor loops heb je in Javascript een aantal varianten naast de for loop:
code:
1
2
3
4
5
6
7
8
9
10
11
// Standaard in andere talen
while ([conditie]) {} // Zolang de conditie geldig is, doe ...
do {} while ([conditie]); // Zolang de conditie geldig is maar ten minste 1 keer doe ...

// Iets specifieker JS
for (const e of [1,2,3]) ; // Doe voor e=1, e=2, e=3
for (const e in {a:1, b: 2, c:3}); // Doe voor e='a', e='b', e='c'

// En niet echt loops, maar ook voor itereren
[1,2,3].forEach(function(e) {})
etc

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
SavageNL schreef op woensdag 2 september 2020 @ 20:14:
[...]
Ik weet niet of ik het nu makkelijker of moeilijker ga maken, maar de structuur van een for-loop is in principe meer conventie dan verplicht:
code:
1
2
3
4
for (let i = 0; i < 10; i++) console.log(i);
let i = 0; for (; i < 10; i++) console.log(i);
let i = 0; for (; i < 10; ) console.log(i++);
let i = 0; for (; ; ) { console.log(i); if (i < 10) break; }

Deze doen allemaal hetzelfde.
Niet helemaal hetzelfde...

Bij de eerste heb je buiten de for-scope geen i meer.
Bij de 2e is binnen de for-scope i altijd gelijk
Bij de 3e is binnen de for-scope i afhankelijk van of je een statement voor of na de console.log zet
En ik zou zeggen dat de 4e een oneindige loop is, aangezien je nergens i verandert (en als het wel hetzelfde werkt is het een imho een zware code-f*ck, want dit is onleesbaar als je meerdere variabelen etc binnen je for-loop hebt.

Acties:
  • 0 Henk 'm!

  • SavageNL
  • Registratie: November 2001
  • Laatst online: 17-09 06:54
Met ze doen hetzelfde bedoelde ik dat de output hetzelde is. Bij de 4e mist idd een ++ in de console.log omdat ik te lui was de voorbeelden te proberen :)
Het punt wat ik probeerde te maken is in ieder geval dat er een conventie is over wat er binnen de 3 delen van een for staat maar dat dat niet afgedwongen wordt en je ziet ze in het wild ook weleens anders gebruikt worden.

Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
if (eEntered.indexOf(".") - eEntered.indexOf("@") < 2 || eEntered.indexOf(".") > eEntered.length - 3)

Uitleg -

There must be at least one character between the dot and the @. The first part,
left of the pipes, tests whether that one character (or more) is missing, which would be illegal.
There must also be at least 2 characters following the dot. The second part, right of the pipes,
tests whether there are fewer than 2 characters following the character, which would be
illegal.
Ik ben er niet echt wijzer van geworden. Waar staat die - voor eigenlijk?
Het is geen vergelijkingsoperator naar mijn weten, en een min-teken voor Math heeft daar niks te zoeken.

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Area schreef op dinsdag 20 oktober 2020 @ 01:31:
Waar staat die - voor eigenlijk?
Gewoon basisschool aftrekken. IndexOf returned een getal ;) Vervolgens doen ze wat truukjes of te kijken of (wat ik vermoed) een e-mailadres "geldig" is (volgens hun definitie van "geldig" dan).

Er staat dus (min-of-meer):
Als de positie van het puntje MINUS de positie van het apenstaartje kleiner is dan twee OF de positie van het puntje is groter dan de ingevoerde lengte MINUS drie...
Nou, gooi daar maar eens wat test-strings tegenaan en kijk wat 't doet...

Ik weet niet waar je deze ellende vandaan hebt maar het is ont-zet-tend slechte code. Zoals je zelf al merkt legt de code zichzelf niet bepaald uit en daarbij klopt er werkelijk geen vierkant hol van heel die check. Voor 't voorbeeld is 't misschien nog ok, maar een emailadres-validatieroutine mag je dit absoluut niet noemen.

[ Voor 80% gewijzigd door RobIII op 20-10-2020 02:07 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
Ik heb het van een boek.

Het is inderdaad een test of een e-mailadres geldig is, maar kon die twee minnen (de andere voor de 3) in mijn logica maar nergens plaatsen.

[ Voor 9% gewijzigd door Area op 20-10-2020 02:09 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En dat is de volledige code van die functie?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
RobIII schreef op dinsdag 20 oktober 2020 @ 02:13:
[...]

En dat is de volledige code van die functie?
function validateEmail() {
var addressIsLegal = true;
var eEntered = document.getElementById("address").value;
if (eEntered.indexOf(" ") !== -1) {
addressIsLegal = false;
}
if (eEntered.indexOf("@") < 1 || eEntered.indexOf("@") > eEntered.length - 5) {>
addressIsLegal = false;
}
if (eEntered.indexOf(".") - eEntered.indexOf("@") < 2 || eEntered.indexOf(".") > eEntered.length - 3) {
addressIsLegal = false;
}
if (addressIsLegal === false) {
alert("Please correct email address");
return false;

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je code niet snapt (en dat is bij deze brei niet gek - ga alsjeblieft een ander boek halen!), gooi 't dan eens in een test-projectje en laat er wat waardes op los en "kijk" wat het doet:

Afbeeldingslocatie: https://tweakers.net/i/YTFTcfGIBiz7c2E5neXG6rFO2qY=/800x/filters:strip_exif()/f/image/FT5Z4FOE2BNXMr8umvWvBhxv.png?f=fotoalbum_large

En anders probeer je het gewoon stukje-bij-beetje te ontleden:

JavaScript:
1
2
3
if (eEntered.indexOf(" ") !== -1) {
  addressIsLegal = false;
}

Ofwel: Als er een spatie in aangetroffen wordt dan is 't adres niet geldig. IndexOf() geeft -1 als iets NIET voorkomt in een string; dus er staat: Als de index van een spatie NIET gelijk is aan -1 dan is het adres ongeldig. Ofwel: een dubbele ontkenning ("niet" en "-1" (niet gevonden))... Dus: Als er WEL een spatie in voorkomt dan is het adres ongeldig.

En vanaf daar gaat 't alleen maar downhill met die functie. Ik zie ze zelden zó slecht. Welk boek is het? Obfuscated Javascipt?

[ Voor 73% gewijzigd door RobIII op 20-10-2020 02:29 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
"A Smarter Way to Learn JavaScript" van Mark Myers.

[ Voor 72% gewijzigd door Area op 20-10-2020 02:33 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Area schreef op dinsdag 20 oktober 2020 @ 02:26:
"A Smarter Way to Learn JavaScript" van Mark Myers.
Van wat ik er zo van kan vinden wordt er toch (min-of-meer) wel uitgelegd wat er gebeurt?
(Neemt niet weg dat de functie, en vooral de manier waarop(!) bagger is):
Validating an email field includes checking to make sure there are no illegal characters, like spaces, and that all the essentials of a legal email address are there: one or more characters, followed by @, followed by one or more characters, followed by a dot, followed by two to four characters. The standard way to test for all this is to match the user's entry with a regular expression. Regular expressions are beyond the scope of this book, but I'll give you a taste of them at the end of the chapter. Meanwhile, here's how to head off many user errors by
using indexOf.

Let's start by checking for spaces, which are illegal in an email address.
JavaScript:
1
2
3
4
5
6
7
function validateEmail() { 
  var eEntered = document.getElementByld("email").value; 
  if (eEntered.indexOf(" ") !== -1) {
    alert("No spaces allowed in address"); 
    return false; 
  } 
}
Line 3 is the key here. If the index of the illegal space character is anything other than -1, it means the character is in there somewhere, and an alert displays.

If you wanted to, you could test for the presence of all the other illegal characters the same way. But in that case, you'd be better off using a regular expression, as I show at the end of this chapter.

In an email address you want to see the @ sign at least one character from the beginning of the string and no closer to the end of the string than 5 characters away. Here's a line that adds this test to the example function.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function validateEmail() { 
  var addressIsLegal = true; 
  var eEntered = document.getElementByld("address").value; 
  if (eEntered.indexOf(" ") !== -1) { 
    addressIsLegal = false; 
  } 
  if (eEntered.indexOf("@") < 1 || eEntered.indexOf ("@") > eEntered.length - 5) {
    addressIsLegal = false; 
  } 
  if (addressIsLegal === false) { 
     alert("Please correct email address"); 
    return false; 
  } 
}
About line 7: The first part, left of the pipes, tests whether the character is at the beginning of the address, which would be illegal. The second part, right of the pipes, tests whether there are fewer than 4 characters following the character. Since there must be at least one character for the domain name plus a dot plus at least two characters for the extension, fewer than 4 characters following the @ would be illegal.

Finally, I'll add a test for the dot that needs to be at least 1 character away from the and have 2 to 4 characters following it.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function validateEmail() { 
  var addressIsLegal = true; 
  var eEntered = document.getElementByld("address").value; 
  if (eEntered.indexOf(" ") !== -1) { 
    addressIsLegal = false; 
  } 
  if (eEntered.indexOf("@") < 1 || eEntered.indexOf("@") > eEntered.length - 5) {
    addressIsLegal = false; 
  } 
  if (eEntered.indexOf(".") - eEntered.indexOf("@") < 2 || eEntered.indexOf(".") > eEntered.length - 3) {
    addressIsLegal = false; 
  } 
  if (addressIsLegal === false) { 
    alert("Please correct email address"); 
    return false; 
  } 
} 
Line 10: There must be at least one character between the dot and the @. The first part, left of the pipes, tests whether that one character (or more) is missing, which would be illegal. There must also be at least 2 characters following the dot. The second part, right of the pipes, tests whether there are fewer than 2 characters following the character, which would be illegal.
^ Overigens komt die tekst uit een OCR ofzo volgens mij; kan zijn dat er wat fouten in staan.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
Moet ik soms - 1 lezen omdat de length 1 cijfer meer is dan het indexnummer?

Ik heb het boek bijna uitgelezen, is eigenlijk een prima boek, maar vond die twee lijnen code met - verwarrend.
Zou het boek voor newbies wel aanraden trouwens.

[ Voor 52% gewijzigd door Area op 20-10-2020 02:50 ]


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Area schreef op dinsdag 20 oktober 2020 @ 02:48:
Moet ik soms - 1 lezen omdat de length 1 cijfer meer is dan het indexnummer?
Ik weet niet wat je nu precies bedoelt maar:

JavaScript:
1
2
3
4
5
"RobIII".indexOf("R"); // Geeft 0
"RobIII".indexOf("o"); // Geeft 1
"RobIII".indexOf("b"); // Geeft 2
"RobIII".indexOf("x"); // Geeft -1
"RobIII".length; // Geeft 6
Dergelijke vragen kun je dus prima zélf beantwoorden door ze gewoon even te proberen.
Area schreef op dinsdag 20 oktober 2020 @ 02:48:
Ik heb het boek bijna uitgelezen, is eigenlijk een prima boek, maar vond die twee lijnen code met - verwarrend.
Zou het boek voor newbies wel aanraden trouwens.
Afgaand op enkel dit stukje code dat ik er van gezien heb zou ik er ver vandaan blijven :P Los van de ranzige (en overigens nooit 100% kloppende) manier van emailadres controleren: waarom geeft die functie een alert in hemelsnaam? Dat is de verantwoordelijkheid van die functie niet; evenals dat die functie zélf het document gaat benaderen i.p.v. dat je een emailadres als argument meegeeft (DRY); zo'n beetje het hele nut van functies. Die functie moet gewoon een true/false geven, klaar.

[ Voor 49% gewijzigd door RobIII op 20-10-2020 02:59 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
Rob, index is 2, length is 3.

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Doe me een lol en maak even volzinnen a.u.b. Index is 2 van wat? De length van "Rob" is 3 ja. Hier laat ik dat toch duidelijk zien?

[ Voor 19% gewijzigd door RobIII op 20-10-2020 02:57 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
RobIII schreef op dinsdag 20 oktober 2020 @ 02:57:
[...]

Doe me een lol en maak even volzinnen a.u.b. Index is 2 van wat? De length van "Rob" is 3 ja. Hier laat ik dat toch duidelijk zien?
Maximum index van Rob gaat tot 2, terwijl de length 3 is.

Acties:
  • +3 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Area schreef op dinsdag 20 oktober 2020 @ 02:59:
[...]

Maximum index van Rob gaat tot 2, terwijl de length 3 is.
Ja. Again: dat laat ik toch ook zien (met een iets ander voorbeeld)? Waarom probeer je die code anders niet even :?

De index is, zoals zoveel dingen, "zero based".

[ Voor 31% gewijzigd door RobIII op 20-10-2020 03:02 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
Is goed thanks. Nu ik weet dat het minus is is het helderder geworden.

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
The standard way to test for all this is to match the user's entry with a regular expression. Regular expressions are beyond the scope of this book, but I'll give you a taste of them at the end of the chapter.
"Er is een manier om dit probleem correct op te lossen; maar dat ga ik je niet vertellen. In plaats daarvan ga ik je een voorbeeld voorschotelen wat je nooit in de praktijk moet gebruiken."

Lekker ruk geschreven boek. Auteur snapt duidelijk niet hoe educatieve boeken in elkaar horen te steken.

(Nog afgezien van het feit dat een e-mail adres valideren met een regex eigenlijk ook een slecht idee is.)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
R4gnax schreef op zaterdag 24 oktober 2020 @ 13:44:
[...]


"Er is een manier om dit probleem correct op te lossen; maar dat ga ik je niet vertellen. In plaats daarvan ga ik je een voorbeeld voorschotelen wat je nooit in de praktijk moet gebruiken."
Een regex is (óók) geen correcte manier om een e-mailadres te valideren, zoals je zelf al aangeeft. De hele exercitie is wat dat betreft nutteloos. Having said that: tenzij je een superstrakke RFC-compliant validatie wil is een 'simpele(re)' validatie natuurlijk een prima probleem om op te lossen om (string)validatie te leren. Je kunt prima stellen dat "alles wat <iets><apenstaartje><iets> is is een geldig email adres", bij wijze van. Dat dat technically niet helemaal realistisch is maakt voor 't leerproces niets uit; zolang je er als auteur maar bij vertelt dat de realiteit complexer is.

[ Voor 16% gewijzigd door RobIII op 24-10-2020 13:49 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
Boek is een beetje gedateerd, er wordt nog alert() en var gebruikt i.p.v console.log en let/const.

Acties:
  • 0 Henk 'm!

  • Area
  • Registratie: Juli 2019
  • Laatst online: 30-11-2023
Snap deze code niet? Return zou true moeten zijn, maar is false.
15 is namelijk een oneven getal.

JavaScript
code:
1
2
3
4
5
6
7
8
9
10
function isPrime(value) {
  for (let i = 2; i <= Math.sqrt(value); i++) {
    if (value % i === 0) {
      return false;
    }
  }
  return value > 1;
}

console.log(isPrime(15));

[ Voor 7% gewijzigd door Area op 16-05-2021 14:00 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Open maar even een nieuw topic en hou daarbij onze Quickstart dan even in de gaten.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.