pourquoi p> x code> non défini ici? L'objet Options les définit, puis
x code> est transmis sous forme de paramètre à la fonction FOO ().
var options = {x:4,y:3};
foo(options);
function foo() {
console.log(x);
}
console.log(options.y);
6 Réponses :
Vous devez passer des options paramètres dans FOO Fonction ...
p>
var options = {x:4,y:3}; foo(options); function foo(options) { console.log(options.x); } console.log(options.y);
Merci! Lorsque je teste votre code, cela fonctionne même si je n'inclut pas les options code> à l'intérieur de la fonction
foo (); code>. Y a-t-il une raison pour laquelle vous mettez
options code> à l'intérieur de l'appel de la fonction
foo (options); code> et la fonction
fonction foo (options) {} code>?
En raison de la fermeture, vous avez accès à code> Options CODE> et vous y accédez, mais vous n'avez rien de nom x code> en fermeture afin que vous obteniez une erreur X n'est pas défini
En JavaScript, il y a un concept appeler des fonctions pures .. Essayez la fonction d'écriture de cette façon. Si vous écrivez de cette façon, vous pouvez avoir un comportement plus prévisible ...
Vous pouvez accéder à l'aide des options code> à partir de code> Fermeture code>
p>
var options = {x:4,y:3}; foo(options); function foo({x,y}) { console.log(x); } console.log(options.y);
car il n'y a pas de x code> disponible dans
foo () code>. Vous avez besoin d'un paramètre.Vous pouvez utiliser Déballage Les champs des objets sont passés en tant que paramètre de fonction .
var options = {x:4,y:3};
foo(options);
function foo({x,y}) {
console.log(x);
}
console.log(options.y);
p>
param code> dans FOO fonction.SO Pass Pass Param avec fonction
Fonction FOO (param) code> li> LI>
x code> n'est pas une variable.
option.y code> fonctionne.parce que vous êtes directement appeler la clé d'objet li>
ol>
var options = {x:4,y:3};
foo(options);
function foo(param) {
console.log(param.x);
}
console.log(options.y);
Bien que les fonctions puissent accéder aux valeurs des fermetures, X n'est pas défini ni la fermeture enfermante à FOO. Vous pouvez cependant y accéder à l'aide de p> options.x code> car les options sont définies dans la fermeture
var options = {x:4,y:3};
foo(options);
function foo({x}) {
console.log(x);
}
console.log(options.y);
Pour la fermeture. +1
Vous devez le déclarer dans la liste des arguments de votre les fonctions. Vous pouvez également transmettre l'objet entier, car la fonction p> x code> est indéfini car vous ne le transmettez pas comme une dispute à votre fonction, et x n'est pas disponible dans les champs parents non plus.
code> montre ici. Ou vous pouvez également transmettre un objet complet et destructures dans la liste d'arguments pour accéder à ses propriétés, comme indiqué par la fonction
Baz code> ici: p>
const options = { x: 4, y: 3 };
function foo(x) {
console.log(x);
}
function bar(arg) {
console.log(arg.x, arg.y);
}
function baz({ x, y }) {
console.log(x, y);
}
foo(options.x);
foo(options.y);
bar(options);
baz(options);