捕获变量的当前值

Ran*_*lue 5 javascript

我有一个myVariable不断变化的变量。在某些时候,我想捕捉的myVariable(不是引用myVariable)到另一个变量myVariableAtSomePoint

示例代码:

var myVariable = 1;

function test () {
    var myVariableAtSomePoint= myVariable;
    console.log(myVariableAtSomePoint);
}

myVariable = 2;

test(); // Prints 2, instead of 1.
Run Code Online (Sandbox Code Playgroud)

Jam*_*ill 4

您在评论中提到这myVariable是一个数字。由于myVariable包含原始类型,因此只需使用以下代码:

myVariableAtSomePoint = myVariable;
Run Code Online (Sandbox Code Playgroud)

看一下JAVASCRIPT:按值传递或按引用传递。这是一个引用:

当传入字符串或数字等基本类型变量时,值是按值传入的。

我还建议阅读:如何正确克隆 JavaScript 对象?

编辑:

我相信您假设函数在代码中的放置会影响变量的值。它不是。请参阅下面的示例:

这:

function test () {
    var myVariableAtSomePoint= myVariable;
    console.log(myVariableAtSomePoint);
}

myVariable = 2;

test(); // Prints 2, instead of 1.
Run Code Online (Sandbox Code Playgroud)

与此相同:

var myVariable = 1;

function test () {
    var myVariableAtSomePoint= myVariable;
    console.log(myVariableAtSomePoint);
}

myVariable = 2;

test(); // Prints 2, instead of 1.
Run Code Online (Sandbox Code Playgroud)

您的问题是您在将 的值分配给myVariable 之前myVariableAtSomePoint更改了它的值。为了使其按您想要的方式工作,您需要在更改值之前test()调用该函数myVariable

var myVariable = 1;

function test () {
    var myVariableAtSomePoint= myVariable;
    console.log(myVariableAtSomePoint);
}

test(); // Prints 1
myVariable = 2;
test(); // Prints 2
Run Code Online (Sandbox Code Playgroud)

重要提示:无论函数放置在什么位置,内部的代码test()在调用该函数之前都不会执行。