Avatar billede RasmusTheR Seniormester
22. marts 2020 - 12:04 Der er 9 kommentarer og
1 løsning

Hvorfor virker if-sætning ikke?

Jeg har et script, hvori jeg gerne vil indsætte en if-sætning, men jeg får desværre en fejl. Er der noget jeg har set mig blind på, eller virker det bare ikke i denne kontekst??

If-sætningen er indsat i nedenstående.. Scriptet stopper når det kommer til if-sætningen.

while (bCount--) {
       
        let tries = 100;
        var taeller = 0;
       
        debugger
       
        while (tries--) {
            taeller ++;
            const dir = Math.rand(0, Math.TAU);
            const vel = Math.rand(VEL_MIN, VEL_MAX);
            const ball = new Ball(
         
                if(taeller < 20){
            var ballSize = 20;
        } else {
            var ballSize = 10;
        } 
           
                Math.rand(MAX_BALL_SIZE + 10, canvas.width - MAX_BALL_SIZE - 10),  //start possision
                Math.rand(MAX_BALL_SIZE + 10, canvas.height - MAX_BALL_SIZE - 10),
                Math.cos(dir) * vel,
                Math.sin(dir) * vel,
                //Math.rand(MIN_BALL_SIZE, MAX_BALL_SIZE),
                var ballSize,
               
            );
            if (canAdd(ball)) {
                balls.push(ball);
                break;
            }
        }
    }
Avatar billede keysersoze Guru
22. marts 2020 - 12:53 #1
Hvilken fejl?
Avatar billede Jan Seniormester
22. marts 2020 - 13:08 #2
if (canAdd(ball)) {

der er jo ingen betingelse.
såsom = noget, eller mindre eller større

det dur ikke

sætningen skal give en true or false, eller et direkte resultat, såsom 48
Avatar billede softspot Forsker
22. marts 2020 - 13:50 #3
@Jan: Det er ikke korrekt. Hvis canAdd er en eksisterende funktion som returnerer en værdi, der evaluerer til noget boolsk (hvilket meget gør i JavaScript), så er det en helt gyldig if-sætning...

Dog kunne det være interessant, at se definitionen af canAdd :-)
Avatar billede softspot Forsker
22. marts 2020 - 13:52 #4
Umiddelbart er der en syntaksfejl...

Denne linje stopper lidt pludseligt:

            const ball = new Ball(

Der mangler noget her...
Avatar billede RasmusTheR Seniormester
22. marts 2020 - 14:05 #5
Det er denne sætning som giver fejlen. Hvis den ikke er der kører scriptet fint:
Fejlen lyder "SyntaxError: expected expression, got keyword 'if'"

if(taeller < 20){
            var ballSize = 20;
        } else {
            var ballSize = 10;
        }
Avatar billede softspot Forsker
22. marts 2020 - 14:07 #6
Se min kommentar før din :)
Avatar billede softspot Forsker
22. marts 2020 - 14:08 #7
Eller rettere... flyt din if-sætning ned efter parameterlisten til new Ball - i stedet for at smide den ind midt i parameterlisten :D
Avatar billede softspot Forsker
22. marts 2020 - 14:09 #8
Nå, den skal faktisk nok op FØR new Ball(, da variablen ballSize bruges i parameterlisten :)
Avatar billede softspot Forsker
22. marts 2020 - 14:12 #9
Der er faktisk flere ting galt med din syntaks. Brug dette kode:

        var ballSize = 10;
        if(taeller < 20){
            ballSize = 20;
        }

        const ball = new Ball(
                Math.rand(MAX_BALL_SIZE + 10, canvas.width - MAX_BALL_SIZE - 10), 
                Math.rand(MAX_BALL_SIZE + 10, canvas.height - MAX_BALL_SIZE - 10),
                Math.cos(dir) * vel,
                Math.sin(dir) * vel,
                ballSize
            );
Avatar billede RasmusTheR Seniormester
22. marts 2020 - 14:41 #10
Det virker ved at sætte den ned før new Ball :-)

1000-tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
De virker skræmmende godt: Med Apples nye Airtags kunne jeg spore mine chefer (og mine ting) med mobilen
Apples Airtags er uhyre effektive og lette at anvende - og det giver grund til bekymring.
Computerworld
Stor krise i den danske it-stjerne David Heinemeiers Hanssons firma: Her er historien om dramaet, der fik en tredjedel af de ansatte i Basecamp til at smække med døren
De ansatte har i hobe forladt David Heinemeier Hanssons amerikanske succes-firma Basecamp efter en intern racisme-debat. Hvordan kunne det gå så galt?
CIO
Har du rost din mellemleder i dag? Snart er de uddøde - og det er et tab
Computerworld mener: Mellemledere lever livet farligt: Topledelsen får konstant ideer med skiftende hold i virkeligheden, og moden går mod flade agile organisationer. Men mellemlederen er en overset hverdagens helt med et kæmpe ansvar. Her er min hyldest til den ofte latterliggjorte mellemleder.
Job & Karriere
Eva Berneke stopper som topchef i KMD og flytter til Paris: Her er KMD's nye topchef
Efter syv år på posten som topchef for KMD forlader Eva Berneke selskabet. Nu flytter hun med familien til Paris, hvor hun vil fortsætte sit bestyrelsesarbejde. KMD har allerede afløser på plads.
White paper
Sådan outsourcer du effektivt – og undgår fælderne
Nogle outsourcer for at minimere omkostningsniveauet, andre for at skaffe ressourcer og spidskompetencer, der er svære at skaffe lokalt – eller af en helt tredje årsag. Der er dog talrige forhold, der er gode at afdække, før man overhovedet begynder at lede en outsourcingudbyder. Man skal klarlægge egne projektbehov samt de spørgsmål og krav, man vil stille samt indsamle viden og erfaringer om, hvordan samarbejdet indledes, drives og styres optimalt. Dertil skal man kende til de hyppigste faldgruber, der kan få et ellers lovende outsourcingsamarbejde til at køre i grøften.