2010-09-01 18 views
53

Ich habe einige Javascript-Code:Javascript, Was macht der^(Caret) Operator?

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#calcular').click(function() { 
    var altura2 = ((($('#ddl_altura').attr("value"))/100)^2); 
    var peso = $('#ddl_peso').attr("value"); 
    var resultado = Math.round(parseFloat(peso/altura2)*100)/100; 
    if (resultado > 0) { 
     $('#resultado').html(resultado); 
     $('#imc').show(); 
    }; 
    }); 
}); 
</script> 

Was bedeutet der ^ (caret) Betreibers in Javascript?

Antwort

60

Der ^ operator ist der bitweise XOR-Operator. Um einen Wert zu quadrieren, verwenden Math.pow:

var altura2 = Math.pow($('#ddl_altura').attr("value")/100, 2); 
+3

in einer Sprache wie Javascript, wo Typen sie kaum so locker sind vorhanden, ich bin fast überrascht, dass es – tenfour

+1

auch bitweise Operationen :) sind weiß, dass ich die Funktion pow (der Web Master Loreal scheint nein ...), aber ich konnte den^Operator für Javascript nicht finden. Danke für den Link! – Torres

+1

Schöner Fang! Weitergeleitet zu meinem spanischen Freund, der ein wenig geschockt wurde. Bemerkenswert, wie zum Beispiel 200cm/70kg Ihnen einen BMI der Unendlichkeit geben ;-) – Michael

4

Dies ist der bitweise XOR-Operator.

29

^ ausführt Exklusiv-ODER (XOR), beispielsweise

6 ist 110 in Binär-, 3011 in binär ist, und

6^3, bedeutet 110 XOR 011 ergibt 101 (5).

110 since 0^0 => 0 
    011   0^1 => 1 
    ---   1^0 => 1 
    101   1^1 => 0 

Math.pow (x, 2) berechnet aber für Platz können wir besser nutzen x*x als Math.pow Logarithmen verwendet, und Sie mehr Annäherungen Fehler erhalten. (x² ~ exp(2.log(x)))

+0

War der Logarithmus nicht bekannt! Vielen Dank! (Es ist also wahrscheinlich auch schneller, oder?) – Michael

+0

Wahrscheinlich schneller (während Math-Prozessoren sind ziemlich schnell für 'doppelte' einfache Operationen - Protokoll ist wahrscheinlich langsamer, während eine Optimierung der Taylor-Serie verwenden). –

+0

Frage mich, warum Math.pow nicht nur x * x verwendet?! – Jowen

0

Es heißt bitweise XOR. Lassen Sie mich erklären es:

Sie haben:

Decimal Binary 
0   0 
1   01 
2   10 
3   11 

Jetzt wollen wir 3^2=? dann haben wir 11^10=?

11 
10 
--- 
01 
--- 

so 11^10=01 01 in Dezimal 1 ist.

können wir also sagen, dass 3^2=1;