定义一个放在Javascript函数参数中的变量

时间:2014-01-04 22:09:04

标签: javascript function variables console

我正在尝试定义一个已在函数参数中选择的变量,但它不会更改我在参数中使用的变量。

我的代码:

var x = "nothing yet!";

function changeValue(variable) {
    variable = "x";
}

changeValue(x);
console.log(x);

当我通过控制台运行时,它只是“没有任何东西!”当我希望它以“x”形式出现时。

任何有关解决此问题的帮助都会非常有用。

2 个答案:

答案 0 :(得分:2)

在JavaScript strings are primitive value types中。你不能在像这样的函数中改变它们。

它们也是不可改变的。更改示例中的字符串就像更改数字2 :)

要强调的是,对于JavaScript - 您正在做的事情有点像:

function makeTwoThree(two){
    two = 3;
}
var two = 2;
makeTwoThree(two); // two is passed by value since it's a value type.

你应该返回它:

function changeValue(variable) {
    return "x";
}
variable = changeValue(variable);

或者,您可以将其包装在对象中并传递可以更改引用的对象。但是,请记住,您不是在这里更改字符串,而是替换它。

答案 1 :(得分:-1)

您应该将其作为全局变量引用,方法如下:

var x = "nothing yet!";

function changeValue(variable) {
    window[variable] = "x";
}

changeValue("x");
console.log(x);

这会将x放入您的控制台。这是有效的,因为变量x是在全局范围内定义的(在任何函数之外)。您也可以这样做,因为如果它还需要在全局范围之外工作,那么在函数内部:

(function() {
    var x = "nothing yet!";

    function changeValue(variable) {
        this[variable] = "x";
    }

    changeValue("x");
    console.log(x);
})()

该代码中的this引用了它的调用范围,因此在这种情况下,this[variable]只是从调用它的函数中获取变量x。