Meine Antwort geht davon aus, dass durch Without specifying undefined
Sie einen Anruf wie das bedeutet:
theFunction.apply(["ali", "Developer"]);
Wenn Sie verwenden call
oder apply
, der erste Parameter ist der Ausführungskontext (Variable this
innerhalb theFunction
). Die zwei Beispiele setzen es auf undefined
, so this
innerhalb theFunction
wird undefined
auswerten. Zum Beispiel:
function theFunction(name, profession) {
console.log(this); // logs `undefined`
console.log("My name is " + name + " and I am a " + profession + " . ");
}
theFunction.apply(undefined, ["ali", "Developer"]);
Here is der Erklärung Faden, warum man undefined
als Ausführungskontext verwenden würde.
Nun zu Ihrer Frage. Wenn Sie weglassen undefined
in Ihrem Anruf wie das ist:
theFunction.apply(["ali", "Developer"]);
der Ausführungskontext - this
- auf ["ali", "Developer"]
gesetzt und name
und profession
als undefined
ausgewertet werden, da Sie nur einen Parameter zu apply
passieren, das ist, warum Sie "My name is undefined and I am a undefined"
call
und apply
werden normalerweise verwendet, wenn Sie den Ausführungskontext der Funktion ändern möchten. Sie verwenden wahrscheinlich apply
, um Array von Argumenten in separate Argumente zu verwandeln. Um das zu tun, müssen Sie den gleichen Ausführungskontext als eine setzen, gewesen wäre, wenn Sie die Funktion aufgerufen, ohne gelten:
theFunction("John", "fireman"); // `this` points to `window`
theFunction.apply(this, ["John", "fireman"]); // `this` points to `window`
See: http://stackoverflow.com/questions/5247060/in-javascript-is-there-equivalent-to-apply-that-doesnt-change-the-value- von-thi ist es so, dass du den Wert von 'this' nicht änderst. – scrappedcola
_ "Ohne Angabe undefined sagt es" mein Name ist undefiniert und ich bin ein undefined "" _ Wo? – guest271314
Ich denke, OP bedeutet, wenn er 'nicht definiert' als ersten Parameter hinzufügt, wenn Sie anwenden oder aufrufen. Die richtige Antwort ist unten. –