2017-04-19 4 views
1

ich auf dieses Problem nur kam, und ich würde gerne wissen:Null Unterzeichnung: Ändern -0 0

Was ist die beste Praxis für eine -0 zu einem normalen 0 verändern? Das verwirrt mich darüber, warum es eine Methode geben würde, den vorzeichenbehafteten Wert zu setzen, aber keinen klaren Weg, um es in einen normalen 0 zu ändern.

Antwort

2

Wenn es angenommen hat, eine logische integer sein, zwingen integer Kontext durch bitweise oder-ing mit 0:

var x = -0; 
console.log(x | 0); # Produces 0 

Für alle anderen Integer-Werte, das ist ein no-op (abgesehen von möglicherweise Code zu beschleunigen In einigen Browsern wird garantiert, dass der Wert für JIT-Optimierungen ganzzahlig ist (dies ist ein üblicher Trick, um den Browser über Integer-Verhalten von JS-Kreuzcompilern zu informieren), und da -0 kein zulässiger ganzzahliger Wert ist, wird es in plain konvertiert 0.

1

Einfach testen und neu zuweisen.

if (var === -0) { 
    var = 0; 
} 

Dies wird auch die Zuordnung tun, wenn var 0 positive enthält, weil 0 === -0, aber es gibt keinen Schaden darin.