2016-07-05 6 views
0

Seltsame JavaScript Vergleichsoperator

var quiz_progress = '3' 
 

 
console.log(+quiz_progress) 
 
console.log($('#quiz .question').length + 1) 
 

 
console.log(+quiz_progress >= $('#quiz .question').length + 1)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="quiz"> 
 
    <div class="question">1</div> 
 
    <div class="question">1</div> 
 
    <div class="question">1</div> 
 
</div>

Warum ist das false? seit ich den String zur Nummer gegossen habe. Und versuchen Sie, typeof für beide Variable zu tun, zeigt beide den richtigen Datentyp.

+2

Warum sollte ' '3 '== $ (' # quiz .question '). Länge + 1' ist wahr? Selbst wenn $ ('# quiz .question'). Length + 1 '3 ist, wird das Ergebnis immer noch' '3'! = 3 'sein. – choz

+1

Weil' 3 == 4 '' falsch 'ist? –

+1

'$ ('# quiz .question'). Länge + 1 = 4' während' + quiz_progress = 3'. Wie können diese beiden Werte gleich sein? – currarpickt

Antwort

4

Da Sie überprüfen, ob 3 4. gleich Sie haben 3 .question divs, so:

$('#quiz .question').length + 1 ==> 4 
0

Sie vermissen + Präfix Inkrementoperator (++)

var quiz_progress = '3' 

console.log(++quiz_progress) // 4 
console.log($('#quiz .question').length + 1) 

console.log(++quiz_progress >= $('#quiz .question').length + 1) // 5 >= 4 
+0

ich denke, er will string zu int ändern, indem er 1 + nicht inkrementieren – guradio

+0

Ich denke, OP erwartet quiz_progress zu erhöhen 1.So OP Wunder für immer falsch !! –

Verwandte Themen