Замена слова в тексте с помощью c # в визуальных студиях

В то время как все в порядке передавать переменные или объекты в функцию обратного вызова запроса mysql, используя описанную ранее тактику - обертывание функции обратного вызова в анонимной функции - я думаю, что это в значительной степени не нужно, и я объясню, почему Пример:

// This actually works as expected!

function run_query (sql, y) {
    var y1 = 1;
    connection.query (sql, function (error, rows, fields) {

        if (! error)
        {
            var r = rows[0];

            console.log ("r = " + r[1]);
            console.log ("x = " + x);
            console.log ("y = " + y);
            console.log ("y1= " + y);
            console.log ("");
        }
        else
        {
            console.log ("error = " + error);
        }
    });
};

var x = 5;

console.log ("step 1: x = " + x);

run_query ("SELECT 1", x);

x = x + 1;

console.log ("step 2: x = " + x);

run_query ("SELECT 1", x);

x = x + 1;

console.log ("step 3: x = " + x);

Производит следующий вывод:

step 1: x = 5
step 2: x = 6
step 3: x = 7
r = 1
x = 7
y = 5
y1= 5

r = 1
x = 7
y = 6
y1= 6

Страх в том, что второй вызов run_query () перезапишет переменную y и / или y1 до первого вызов функции run_query () имеет возможность вызвать функцию обратного вызова. Однако переменные в каждом экземпляре вызываемой функции run_query () фактически изолированы друг от друга, сохраняя день.

-9
задан swordboot 11 March 2017 в 12:18
поделиться