2017-06-15 7 views
1

Ich bin neu in Javascript, warum dieser Code undefined zurückgegeben?Warum gibt dieser Code undefined zurück?

const foo = { 
     bar: function() { return this.baz; }, 
     baz: 1, 
    }; 

    console.log((function() { 
     return typeof arguments[0](); 
    })(foo.bar)); 
+0

Wo haben Sie diesen Code gefunden? Das IIFE und 'Argumente [0]' Ding sieht unnötig kompliziert und irrelevant zu Ihrer Frage aus. – Bergi

+0

Wenn Sie Argumente ausführen [0]() 'this' verweist auf den Kontext, in dem es aufgerufen wurde, in diesem Fall wäre es höchstwahrscheinlich' window' und 'window' hat keine Eigenschaft namens' baz' – JohanP

+0

@Tushar Gibt es da? Fühlen Sie sich frei, wieder zu öffnen und zu antworten, aber ich denke, das einzige/Hauptproblem ist das Missverständnis des ['this Schlüsselworts] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) – Bergi

Antwort

-1

Wenn Sie eine Antwort von number erwarten, die nicht von Ihnen Code zurückgegeben werden können. Dies ist ein Missverständnis dieses Schlüsselworts (wie von @Tushar @Bergi hervorgehoben)

Der folgende Code tut es.

function Foo(){ 
    this.baz = 1; 
}; 

Foo.prototype.bar = function() { 
    "use strict"; 
    return this.baz; 
} 

var foo = new Foo(); 
console.log((function() { 
    "use strict"; 
    return typeof arguments[0]; 
})(foo.bar())); 
+0

Das Problem ist mit dem Aufruf der 'bar' Funktion. Zeigen Sie nicht nur den Typ dieser Variablen an. – Tushar

+0

Was denken Sie ist das "richtige Ergebnis" und warum? Ich bin mir ziemlich sicher, dass das OP '' number ''erwartet, den Typ von' 1', was nicht das ist, was dieser Code liefert. – Bergi

+0

Bearbeitet den Code für yeithing 'number'. –

Verwandte Themen