2017-01-12 4 views
1

Sorry im Voraus, wenn dies zuvor gefragt wurde, aber ich konnte es nicht von meinen Suchen finden.seltsamer Argumentwert für Javascript-Funktion, wenn einzelne vs mehrere Argumente

Ausgang für im Entwicklermodus beobachtet Firefox 50.1.0 Chrome 55.0.2883.87

** vielleicht ist es das, was ich falsch mache, aber im Entwicklermodus bei console.log sehen nicht nur, Klicken Sie aber auf die Details des Objekts für diesen spezifischen console.log Anruf

Ich stieß auf diesen Code von Learning Advanced JavaScript, und ich fügte einige console.log Aufrufe, um es besser zu verstehen. Die Ausgaben für meine console.log-Aufrufe ergeben jedoch für mich keinen Sinn.

ich den Ausgang des console.log erwarten ("p00, ...) rufen das gleiche sein, aber die Ausgabe ist unterschiedlich, je nachdem, ob das erste‚return root‘kommentiert wird oder nicht.

Wenn das erste "return root" nicht kommentiert ist, zeigt console.log ("p00, ...) ein Objekt mit einer einzigen Eigenschaft an - es ist" name ". Das ist, was ich erwarte und macht Sinn für mich.

Wenn das erste "Return root" kommentiert ist, zeigt die console.log ("p00, ...) ein Objekt mit zwei Eigenschaften an - sie sind" name "und" city ". Warum passiert das hier? . ??

Unten ist der Code Javascript:

function merge(root){ 
    console.log("p00, root is ", root); 
    console.log("p01, arg length is ", arguments.length); 
    console.log("p02, arg is ", arguments); 


    // comment out this return call and see the difference 
    return root; 


    for (var i = 1; i < arguments.length; i++) { 
     for (var key in arguments[i]) { 
      root[key] = arguments[i][key]; 
     } 
    } 

    return root; 
} 

var v1 = {name: "John"}; 
var v2 = {city: "Boston"}; 
var merged = merge(v1, v2); 
console.log("p03, merged is ", merged); 

beobachteten Ausgang in Firefox:

erste Rück Wurzel uncommente d first return root uncommented

erste Rück root kommentiert first return root commented

+0

Ihre Bilder zeigen das Argument, Wurzel, die * gleichen * oder so in der ersten console.log. nur das * last * console.log ändert sich mit dem // return - es zeigt entweder die unveränderten oder die zusammengeführten Ergebnisse, was Sie auf der rechten Seite sehen. – sweaver2112

+0

Danke geht an @ sweaver2112 und Mike C. – gnemnk

+1

Es war ein Missverständnis meinerseits, wie die Ausgabe in Firefox und Chrome angezeigt wird. Fazit - für console.log ("p00 ...), Ausgänge sind für beide Fälle gleich, aber Konsole bietet einen Verweis auf das Objekt, so dass es den endgültigen Zustand des Objekts zeigen wird, wenn Sie versuchen, weitere Details zu sehen in Bezug auf dieses Objekt. Die JSON.stringify war ein großer Vorschlag, um einen Schnappschuss des Objekts zu sehen. – gnemnk

Antwort

0

Die Konsole bietet eine Referenz zum Objekt Sie sich abmelden. Das heißt, Sie sehen den Status des Objekts nach Ihre Funktion ist fertig ausgeführt.

Wenn Sie einen Schnappschuss des Zustands eines Objekts sehen möchten, können Sie versuchen, es in JSON zu konvertieren.

// Be sure to open your real console for this 
 
function reference(obj) { 
 
    console.log(obj); 
 
    obj.b = 2; 
 
} 
 

 
function json(obj) { 
 
    console.log(JSON.stringify(obj)); 
 
    obj.b = 2; 
 
} 
 

 
reference({ a: 1 }); 
 
json({ a: 1 });

Verwandte Themen