Angularjs und Number.NaN

8

Ich habe die eckigen Dokumente durchsucht, als ich auf Folgendes stieß:

Ссылка

Beachten Sie, dass this.$viewValue = Number.NaN;

Nicht nur in diesem Dokument, sondern auch in anderen eckigen Dokumenten.

Was ist der Vorteil / Nachteil, dies auf diese Weise zu tun, anstatt es als undefined oder null zu setzen?

    
user1460015 22.05.2014, 12:49
quelle

2 Antworten

5

In AgularJS spezifischen Begriffen:

  

$ viewValue

     

Tatsächlicher Zeichenfolgenwert in der Ansicht.

     

$ modelValue

     

Der Wert im Modell, an den das Steuerelement gebunden ist.

Wenn Sie also eine Eingabe haben, hat der darin enthaltene Wert die Form einer Zeichenfolge. Wenn Sie den Modellwert oder interpolierten Wert als Markup anzeigen, {{ myInt }} oder {{ 5 + 5 }} , wird er als Zeichenfolge angezeigt.

Dies liegt daran, dass HTML eine Sprache für Text ist, während JS eine Sprache für Funktionen und Werte ist. Um diesen Doppelmodus für die Doppelbindung zu handhaben, verwendet AngularJS den $ viewValue-Dienst für den "Anzeige" -Wert eines Modellfelds und verwendet $modelValue , um den "tatsächlichen" Wert zu verfolgen.

Der "Anzeige" -Wert sollte niemals "undefiniert" sein, da die Interpolation eines undefinierten Modells keinen Fehler verursachen sollte. und der Wert "display" sollte niemals eine Zahl sein. Bevor es also eine formale Zeichenfolge ist (Interpolation von $modelValue ), ist es ein NaN .

    
Dave Alperovich 25.05.2014, 00:29
quelle
2

Ich nehme an, dass sie Nan benutzen, weil Abschnitt 4.3.23 der ECMAScript-Sprachspezifikation NaN ist definiert als:

%Vor%

Also ist es eine Zahl und nicht etwas Undefiniertes oder Null. Der Wert wird weiter in Abschnitt 8.3

erläutert

Gleichheitsvergleiche mit NaN sind in Abschnitt 11.9.3 definiert:

%Vor%

So sollte zu Vergleichszwecken isNaN () stattdessen verwendet werden:

%Vor%     
juvian 24.05.2014 22:07
quelle