国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript - Comment modifier une variable externe dans une fonction
給我你的懷抱
給我你的懷抱 2017-06-28 09:26:51
0
7
1128

Comme mentionné, le code est le suivant?:

var test = 0;
function fn(){
    //...
    fn2(test);//調(diào)用另一個(gè)方法,傳入全局變量test
}
function fn2(t){
    t++;//修改傳入的變量,但是全局變量并沒有受影響,這里的t不是一個(gè)指向全局test的路徑嗎?
    }

Résolvez vos doutes

給我你的懷抱
給我你的懷抱

répondre à tous(7)
學(xué)霸

La fa?on dont vous l'écrivez ci-dessus consiste simplement à rendre les test的值當(dāng)成參數(shù),傳進(jìn)去了fn2里面而已,fn2里面的參數(shù)t僅僅只是和testvaleurs identiques.
Si vous souhaitez modifier des variables externes à l'intérieur de la fonction, vous pouvez écrire comme ceci.

var test=3
function fn2(){
    test++;
}
fn2();
console.log(test)
//也可以這樣寫
var test=3
function fn2(t){
    return ++t;
}
test=fn2(test);
test=fn2(10);
洪濤

Le questionneur a déjà répondu "Comment modifier les variables externes"...

let test = 0;
function fn(){
    test++;
 }
 fn(); // test == 1 這樣就行了
Les

Paramètrest當(dāng)然不是指向test了,因?yàn)?code>test sont des types primitifs, et les types primitifs sont des transfert de valeur, ce qui signifie que seule une copie de la valeur est transmise à la variable de l'autre partie tandis que les types de référence sont un transfert de référence (partagé), et la valeur du?; Le type de référence est pointé. Lors du passage du pointeur d'objet, une copie du pointeur est transmise à la variable de l'autre partie. Modifier la variable de l'autre partie modifie la variable d'origine, car ils pointent vers la même adresse mémoire et le même objet.

let foo = { counter: 0};
function fn(){
    fn2(foo);
}
function fn2(t){
    t.counter++;
}
fn();// foo.counter == 1;//這樣就達(dá)到題主要的效果了
Le

Le passage de référence (partagé) peut également être considéré comme un type de le passage de valeur, mais la valeur transmise est assez spéciale, c'est un pointeur.

阿神

Les fonctions Javascript passent toutes par valeur plut?t que par référence. Il n'y a aucune relation entre t et test sauf qu'elles ont la même valeur.

扔個(gè)三星炸死你

Changez-le directement, pas besoin de transmettre la valeur

滿天的星座

En savoir plus sur la transmission de valeurs et la transmission de références en js.
Si vous devez écrire comme ceci, vous pouvez encapsuler la variable de test dans un objet, puis transmettre l'objet à cette fonction pour modification.

    var obj = {
        test:0
    }
    function fn(){
        fn2(obj);
    }
    function fn2(obj){
        obj.test++;
    }
    fn();
巴扎黑
var test = 0;
function fn(){
   test++;//這樣就行了,這里的test操作的是全局變量 test
}
function fn2(t){
   t++;//這樣是不行的,因?yàn)檫@里t是局部變量,改變的是局部變量t的值,相當(dāng)于 var t = test;  t++;
}
習(xí)慣沉默

Les types de base de JavaScript n'ont ni pointeurs ni références?; Object dit le contraire, c'est donc la seule astuce.

var global = {
  test1: 1,
  test2: 2
}

function fn () {
  changeByPointer('test1')
}

function fn2() {
  changeByPointer('test2')
}

function changeByPointer (pointer) {
  // do something
  global[pointer] ++
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal