javascript - Comment attribuer une valeur à une variable en dehors d'une fonction à l'intérieur d'une fonction?
淡淡烟草味
淡淡烟草味 2017-05-19 10:39:36
0
5
2675


Comme ci-dessus, g ne peut pas se voir attribuer une nouvelle valeur. Je souhaite écrire une fonction fn qui peut attribuer arbitrairement des valeurs à des variables externes

.

Les exigences réelles sont comme ci-dessus, je souhaite attribuer les variables instanciées à l'extérieur

淡淡烟草味
淡淡烟草味

répondre à tous(5)
PHPzhong

Un concept que l'interrogateur n'a pas compris est le problème de la transmission des paramètres de fonction.

var g = 1;
function fn(a){a=2;}
fn(g);
g//1 
//我是分割线
var g = {a:1};
function fn(b){b.a=2;}
fn(g);
g//{a:2} 

Lorsque des variables externes sont transmises à des fonctions en tant que paramètres, vous devez comprendre deux situations : l'une est le type de données de base et l'autre est l'objet.

Lorsque les paramètres sont des types de données de base, les paramètres de la fonction sont transmis par valeur, c'est-à-dire que la valeur est copiée dans le paramètre. La façon dont la fonction modifie la valeur du paramètre n'est qu'une modification de la copie du paramètre réel, qui. n'affectera pas l'ontologie. Comme indiqué dans votre capture d'écran.

Lorsque le paramètre est un objet, je pense en fait qu'il s'agit d'un transfert de valeur, mais ce qui est transmis est la valeur de l'adresse de référence de l'objet. La fonction indexe en interne l'adresse de l'objet de référence sur l'objet de données réel, puis modifie les attributs dans. l'objet. C'est une situation qui affectera le monde extérieur.

D'une manière générale, si vous souhaitez attribuer une valeur à une variable externe. Autant ne pas transmettre les variables en paramètres, mais effectuer le traitement directement dans le corps de la fonction.

var g;
function fn(){
   g = 1;
}
fn();
g//1

Selon les règles de recherche des variables de fonction, recherchez d'abord si la variable a g dans le corps d'exécution actuel. Si elle ne la trouve pas dans la couche externe, cela signifie que la variable n'a pas été définie ou déclarée.

習慣沉默

Le passage des paramètres de fonction Javascript consiste uniquement à « transmettre des valeurs ».

Une façon plus raisonnable de l'écrire est

var g;
function fn() {
    return 33
}
g = fn();

Manière déraisonnable d'écrire

var g;
function fn() {
    g = 33;
}
fn();

La troisième raison pour laquelle cette dernière est déraisonnable est que le degré de couplage est trop élevé.

大家讲道理
var g;
function fn(){
    g = '32';
}
fn();

Cela peut faire ce dont vous avez besoin, mais vous en voulez probablement un universel, n'est-ce pas ?

你可以选择这样:
var g;
function fn(){
    return '32';
}
g = fn();
左手右手慢动作
// a 为变量名字
function fn(a){
    window[a] = '32'
}
我想大声告诉你

var g;
function fn(valeur){
g = valeur;
}
fn(1);
g//1#🎜🎜 #

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal