non sai js prenota 'questo' esempio [chiuso]

0

Sto leggendo il libro "tu non conosci js questo & oggetto" e mi sono imbattuto in sotto dove stanno spiegando "questo". Ora, sotto l'esempio, capisco un po 'ma non capisco che cosa "argomenti" sta ottenendo.

La parola "argomenti" è solo una sorta di segnaposto? Ho appena provato w / argumentsX al posto degli argomenti, e ottengo lo stesso output della console di [object Arguments]

Se qualcuno può indicarmi la giusta direzione, sarà molto apprezzato.

function foo(something) {
    console.log(this.a, something);
    return this.a + something;
}
undefined
// simple 'bind' helper
function bind(fn,obj) {
  return function() {
     return fn.apply(obj, arguments);
  };
}
undefined
var obj = {
   a: 2
};
undefined
var bar = bind(foo,obj);
undefined
bar
anonymous()
var b = bar(3);
2 3
undefined
console.log(b); 
5

///// Ok, I want to know what the arguments here is... so I run another one where I log to console what arguments is

// simple 'bind' helper
function bind(fn,obj) {
  return function() {
     console.log("YESS " + arguments);
     return fn.apply(obj, arguments);
  };
}
undefined
var obj = {
   a: 2
};
undefined
var NEWvariable  = bind(foo,obj);
undefined
var b = NEWvariable(3);
YESS [object Arguments]
2 3
undefined
    
posta J Kim 04.07.2015 - 00:08
fonte

1 risposta

4

In JavaScript, la firma di una funzione non viene spuntata quando viene chiamata, quindi puoi chiamare una funzione di qualsiasi tipo con qualsiasi numero di argomenti. arguments è una variabile riservata fornita dal linguaggio che contiene tutti gli argomenti inviati alla funzione più vicina, quindi puoi ottenerli anche se non appaiono nella firma della funzione:

js> function foo() {
    return arguments;
}
js> foo('a', 'b', 'c');
({0:"a", 1:"b", 2:"c"})
    
risposta data 04.07.2015 - 00:21
fonte

Leggi altre domande sui tag