我们可以在JavaScript函数中通过引用传递变量吗?

我们可以在JavaScript函数中通过引用传递变量吗?,javascript,Javascript,我通过javascript函数计算给定点的行和列。 为了实现这一点,我必须声明全局变量 var global_row; var global_col; 这是函数体 function calculate_city_row_col(cur_city_id) { var r = 565; var c = 1; var max_city_id = 159895; do{ if((r%2) == 0) c++; max_city_id -

我通过javascript函数计算给定点的行和列。
为了实现这一点,我必须声明全局变量

var global_row;
var global_col;
这是函数体

function calculate_city_row_col(cur_city_id)
{
    var r = 565;
    var c = 1;
    var max_city_id = 159895;
    do{
        if((r%2) == 0) c++;
        max_city_id -= r;
        r--;
    }
    while(cur_city_id <= max_city_id)

    //Saving Result in seperate row and column
    global_row = r + 1;                                 //Global Variable
    global_col = c + (cur_city_id - (max_city_id + 1)); //Global Variable
}
是否有直接传递局部变量的方法?(不使用全局变量)
像这样

calculate_city_row_col(cur_city_id, city_row_ref, city_col_ref);
只需返回一个对象:

function calculate_city_row_col(cur_city_id)
{
    var r = 565;
    var c = 1;
    var max_city_id = 159895;
    do{
        if((r%2) == 0) c++;
        max_city_id -= r;
        r--;
    }
    while(cur_city_id <= max_city_id)

    return {
        row: r + 1,
        col: c + (cur_city_id - (max_city_id + 1))
    };
}

var rowAndCol = calculate_city_row_col(1244);
var city_row = rowAndCol.row;
var city_col = rowAndCol.col;
函数计算城市行列(当前城市id)
{
var r=565;
var c=1;
var max_city_id=159895;
做{
如果((r % 2)=0)C++;
最大城市id-=r;
r--;
}
而(cur_city_id只需返回一个对象:

function calculate_city_row_col(cur_city_id)
{
    var r = 565;
    var c = 1;
    var max_city_id = 159895;
    do{
        if((r%2) == 0) c++;
        max_city_id -= r;
        r--;
    }
    while(cur_city_id <= max_city_id)

    return {
        row: r + 1,
        col: c + (cur_city_id - (max_city_id + 1))
    };
}

var rowAndCol = calculate_city_row_col(1244);
var city_row = rowAndCol.row;
var city_col = rowAndCol.col;
函数计算城市行列(当前城市id)
{
var r=565;
var c=1;
var max_city_id=159895;
做{
如果((r % 2)=0)C++;
最大城市id-=r;
r--;
}
而(cur_city_id只需返回一个对象:

function calculate_city_row_col(cur_city_id)
{
    var r = 565;
    var c = 1;
    var max_city_id = 159895;
    do{
        if((r%2) == 0) c++;
        max_city_id -= r;
        r--;
    }
    while(cur_city_id <= max_city_id)

    return {
        row: r + 1,
        col: c + (cur_city_id - (max_city_id + 1))
    };
}

var rowAndCol = calculate_city_row_col(1244);
var city_row = rowAndCol.row;
var city_col = rowAndCol.col;
函数计算城市行列(当前城市id)
{
var r=565;
var c=1;
var max_city_id=159895;
做{
如果((r % 2)=0)C++;
最大城市id-=r;
r--;
}
而(cur_city_id只需返回一个对象:

function calculate_city_row_col(cur_city_id)
{
    var r = 565;
    var c = 1;
    var max_city_id = 159895;
    do{
        if((r%2) == 0) c++;
        max_city_id -= r;
        r--;
    }
    while(cur_city_id <= max_city_id)

    return {
        row: r + 1,
        col: c + (cur_city_id - (max_city_id + 1))
    };
}

var rowAndCol = calculate_city_row_col(1244);
var city_row = rowAndCol.row;
var city_col = rowAndCol.col;
函数计算城市行列(当前城市id)
{
var r=565;
var c=1;
var max_city_id=159895;
做{
如果((r % 2)=0)C++;
最大城市id-=r;
r--;
}
while(cur_city_id
我们可以在JavaScript函数中通过引用传递变量吗

不,JavaScript是纯粹的传递值(当你传递一个对象时传递的值是一个对象引用,但它仍然是一个值)

你的选择是:

  • 让函数返回一个对象(或数组)

  • 让函数接受对其更新的对象(或数组)的引用

    function calculate_city_row_col(cur_city_id, result)
    {
        var r = 565;
        var c = 1;
        var max_city_id = 159895;
        do{
            if((r%2) == 0) c++;
            max_city_id -= r;
            r--;
        }
        while(cur_city_id <= max_city_id)
    
        //Saving Result in seperate row and column
        result.row = r + 1;
        result.col = c + (cur_city_id - (max_city_id + 1));
    }
    
  • 除非在特定情况下有充分的理由使用#2,否则#1通常是最好的选择。例如,如果您在一个紧密循环中数千次调用此函数,则可能有理由重用单个对象(通过传入),而不是每次创建一个新对象

    我们可以在JavaScript函数中通过引用传递变量吗

    不,JavaScript是纯粹的传递值(当你传递一个对象时传递的值是一个对象引用,但它仍然是一个值)

    你的选择是:

  • 让函数返回一个对象(或数组)

  • 让函数接受对其更新的对象(或数组)的引用

    function calculate_city_row_col(cur_city_id, result)
    {
        var r = 565;
        var c = 1;
        var max_city_id = 159895;
        do{
            if((r%2) == 0) c++;
            max_city_id -= r;
            r--;
        }
        while(cur_city_id <= max_city_id)
    
        //Saving Result in seperate row and column
        result.row = r + 1;
        result.col = c + (cur_city_id - (max_city_id + 1));
    }
    
  • 除非在特定情况下有充分的理由使用#2,否则#1通常是最好的选择。例如,如果您在一个紧密循环中数千次调用此函数,则可能有理由重用单个对象(通过传入),而不是每次创建一个新对象

    我们可以在JavaScript函数中通过引用传递变量吗

    不,JavaScript是纯粹的传递值(当你传递一个对象时传递的值是一个对象引用,但它仍然是一个值)

    你的选择是:

  • 让函数返回一个对象(或数组)

  • 让函数接受对其更新的对象(或数组)的引用

    function calculate_city_row_col(cur_city_id, result)
    {
        var r = 565;
        var c = 1;
        var max_city_id = 159895;
        do{
            if((r%2) == 0) c++;
            max_city_id -= r;
            r--;
        }
        while(cur_city_id <= max_city_id)
    
        //Saving Result in seperate row and column
        result.row = r + 1;
        result.col = c + (cur_city_id - (max_city_id + 1));
    }
    
  • 除非在特定情况下有充分的理由使用#2,否则#1通常是最好的选择。例如,如果您在一个紧密循环中数千次调用此函数,则可能有理由重用单个对象(通过传入),而不是每次创建一个新对象

    我们可以在JavaScript函数中通过引用传递变量吗

    不,JavaScript是纯粹的传递值(当你传递一个对象时传递的值是一个对象引用,但它仍然是一个值)

    你的选择是:

  • 让函数返回一个对象(或数组)

  • 让函数接受对其更新的对象(或数组)的引用

    function calculate_city_row_col(cur_city_id, result)
    {
        var r = 565;
        var c = 1;
        var max_city_id = 159895;
        do{
            if((r%2) == 0) c++;
            max_city_id -= r;
            r--;
        }
        while(cur_city_id <= max_city_id)
    
        //Saving Result in seperate row and column
        result.row = r + 1;
        result.col = c + (cur_city_id - (max_city_id + 1));
    }
    
  • 除非在特定情况下有充分的理由使用#2,否则#1通常是最好的选择。例如,如果您在一个紧密循环中数千次调用此函数,则可能有理由重用单个对象(通过传入),而不是每次创建一个新对象