[VBScript vs JavaScript] Meneer Van Dale wacht ...

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Anoniem: 20174

Topicstarter
Vroeger op de basisschool heb ik nog geleerd dat je bij het rekenen alles netjes in volgorde moet doen. Ezelsbruggetje was "Meneer van Dale wacht op antwoord" -> machtsverheffen, vermenigvuldigen, delen, worteltrekken, optellen, aftrekken.

Maar hoe zit dat bij JavaScript en VBScript? Hieronder heb ik een functie, gedefinieerd in JavaScript en in VBScript. Als ik de functies aanroep krijg ik echter geheel andere antwoorden, naar boven afgerond krijg ik van het VBScript 941 terug en van het JavaScript 6.

:?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<HTML>
  <HEAD>
    <SCRIPT LANGUAGE="VBScript">
    <!--
      Function inleg(doelbedrag, looptijd, startbedrag, r)
        Dim tmp
        If looptijd = 0 Then
        inleg = 0
        Else
        If r = 0  Then
          inleg=(doelbedrag-startbedrag)/looptijd
        Else
          tmp = startbedrag * (1+r/100) ^ looptijd
          inleg = (doelbedrag-tmp) * (r/100) / ((1+r/100)^looptijd-1)
        End If
        End If
      End Function
    -->
    </SCRIPT>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
      function inleg(doelbedrag, looptijd, startbedrag, r) {
        var tmp;
        if (looptijd == 0)
        return 0;
        else {
        if (r == 0)
          return (doelbedrag-startbedrag)/looptijd;
        else {
          tmp = startbedrag * (1+r/100) ^ looptijd;
          return (doelbedrag-tmp) * (r/100) / ((1+r/100)^looptijd-1);
        }
        }
      }
    -->
    </SCRIPT>
  </HEAD>
  <BODY BGCOLOR="#FFFFFF">
    <B>VBScript:</B><BR>
    <SCRIPT LANGUAGE="VBScript">
    <!--
      Document.Write(inleg(66963, 60, 1000, 0.5))
    -->
    </SCRIPT>
    <BR>
    <BR><B>JavaScript:</B><BR>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
      document.writeln(inleg(66963, 60, 1000, 0.5));
    -->
    </SCRIPT>
  </BODY>
</HTML>

Acties:
  • 0 Henk 'm!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 10:48

Pelle

🚴‍♂️

Andere talen houden er andere regels op na, en dat verklaart de verschillen. Voor JavaScript zal de prioriteit en associativiteit van de operatoren hetzelfde als bij C zijn.

Als ik het goed heb zit het bij C zo (hoe hoger, hoe meer prioriteit):

<table border="1" width="50%" bgcolor="#ffffff"><tr><td>() []</td><td>links naar rechts</td></tr><tr><td>++ -- !</td><td>rechts naar links</td></tr><tr><td>* / %</td><td>links naar rechts</td></tr><tr><td>+ -</td><td>links naar rechts</td></tr><tr><td>< <= > >=</td><td>links naar rechts</td></tr><tr><td>== !=</td><td>links naar rechts</td></tr><tr><td>^</td><td>links naar rechts</td></tr><tr><td>&&</td><td>links naar rechts</td></tr><tr><td>||</td><td>links naar rechts</td></tr><tr><td>? :</td><td>rechts naar links</td></tr><tr><td>= += -= *= /=</td><td>rechts naar links</td></tr></table>

/edit
VBScript zal er dus wel weer eigen maniertjes op nahouden.. * Zucht *

Acties:
  • 0 Henk 'm!

Anoniem: 20174

Topicstarter
*LOL*

Javascript kent helemaal geen operator voor machtsverheffen...

De ^-operator staat voor een bitwise xor |:(

Acties:
  • 0 Henk 'm!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 10:48

Pelle

🚴‍♂️

Op maandag 13 mei 2002 17:23 schreef cruesli het volgende:
Javascript kent helemaal geen operator voor machtsverheffen...

De ^-operator staat voor een bitwise xor |:(
Stom stom stom... soms is het antwoord simpeler dan je denkt :o