2017-05-23 5 views
2

Angenommen a Objekt a = {b:1,c:2,d:null,e:undefined} ist und wir verwenden Destrukturierung Zuordnung:Warum die Destrukturierungszuordnung den Nullwert nicht überprüft?

var { 
    b : amer , 
    c : karam , 
    d : moji = 3 , 
    e : yasi = [] , 
} = a; 

amer ist 1 und karam2 ist, es richtig ist, aber ich habe die Standardwerte für d und e. also, wenn d oder e sein undefined oder null, die Zuordnung verwenden Sie die Standardwerte, yasi ist [] weil e ist undefined aber moji Rückkehr null Wert und es ist so seltsam, weil Standardwert in Destrukturierung assingment ist für undefined oder null überprüfen.

Warum Destrukturierungszuordnung Nullwert nicht überprüfen?

+0

Vielleicht bin ich unwissend zu diesem Stil, aber ich verstehe wirklich nicht die Syntax Ihres Snippets - mehrere Teile davon. Am offensichtlichsten, können Sie wirklich die Variable "a" so definieren? Kannst du mich auf eine Ressource hinweisen? –

+2

@DouglasTylerGordon Es ist Standard [Objekt Destrukturierung] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Object_destructioning) mit Standardwerten. – Bergi

+1

Warum gibt es keine Standardwerte für Nullen? Weil 'null' * * ein Wert ist, explizit der Wert" momentan nicht gesetzt oder nichts ". Was unterscheidet sich von * nicht einmal vorhanden *, was "undefined" darstellt. – sweaver2112

Antwort

3

Nach MDN docs über Standardwerte in der Objekt Destrukturierung:

Eine Variable kann eine Standard zugeordnet wird, in dem Fall, dass der Wert von dem Objekt gezogen undefiniert ist.

+1

ja, richtige Antwort, 'null' ist ein' Objekt' Typ, so ist es anders mit 'undefined'. 'undefined' ist ein' undefinierter' Typ. – AmerllicA

Verwandte Themen