how do i update variables using functions

时间:2018-01-21 11:41:21

标签: javascript node.js

So heres my code,how are variables being updated as it is not working.What am i doing here?

var myNum = 0;

function upVar(eletoup) 
{

    this.eletoup = eletoup;

    this.updateValue=function updateValue(newValue) {
        this.eletoup += newValue;
    }}

upVar(myNum).updateValue(1000);

console.log(myNum)

Any help would be appreciated

1 个答案:

答案 0 :(得分:1)

JavaScript是按值传递的。这意味着当你这样做时:

upVar(myNum).updateValue(1000);

upVar收到myNum当时包含的,而不是对myNum的某种引用。 upVar没有任何内容可以对它在(eletoup)中接收到的值的参数进行处理,该值将更改upVar变量的值。他们之间完全没有联系。

相反,通常要做的是拥有一个需要提供更新值 return 值的函数,并让调用从函数接收更新。更简单的例子:

function updateValue(value, update) {
    return value + update;
}
var myNum = 0;
myNum = updateValue(myNum, 1000);
console.log(myNum);
myNum = updateValue(myNum, 1000);
console.log(myNum);

但您似乎想要在代码中使用对象。请注意,this按照您的方式调用upVar时收到的值将是默认 this值。在“松散”(又名“草率”)模式中,该默认值是对全局对象的引用(在浏览器上也可用作window)。在“严格”模式下,它是undefined

您当然可以创建一个对象,从myNum初始化该对象,然后更新该属性。这是一种方法:

function upVar(initialValue) {
    return {
        value: initialValue,
        updateValue: function(update) {
            this.value += update;
        }
    };
}

var myNum = 0;
var obj = upVar(myNum);
obj.updateValue(1000);
console.log("obj.value", obj.value);
obj.updateValue(1000);
console.log("obj.value", obj.value);

// Note that myNum isn't changed
console.log("myNum", myNum);

在某些情况下,函数可以通过接收参数来更新变量而不是,但是因为它们关闭变量。这些功能称为“闭包”。

我建议您完成一些基本的JavaScript教程和/或一本可靠的“Beginning JavaScript”一书,以便为该语言的工作方式奠定良好的基础。

相关问题