Javascript 变量的值是否已更改

Javascript 变量的值是否已更改,javascript,Javascript,如何在javascript中查找变量值是否已更改。如果您是firefox用户,可以使用firebug进行检查。如果您使用IE,我们可以输入警报语句并检查变量值。Ehm var testVariable = 10; var oldVar = testVariable; ... if (oldVar != testVariable) alert("testVariable has changed!"); 不,Javascript中没有神奇的“var.hasChanged()”或“var.modi

如何在javascript中查找变量值是否已更改。

如果您是firefox用户,可以使用firebug进行检查。如果您使用IE,我们可以输入警报语句并检查变量值。

Ehm

var testVariable = 10;
var oldVar = testVariable;

...
if (oldVar != testVariable)
alert("testVariable has changed!");

不,Javascript中没有神奇的“var.hasChanged()”或“var.modifyDate()”,除非您自己编写代码。

将其与已知状态进行比较,看看是否不同。如果您正在查找类似于
变量.hasChanged
,我很确定它不存在。

有一种方法可以监视变量的更改:
对象::监视
-下面的一些代码

/*
For global scope
*/

// won't work if you use the 'var' keyword
x = 10;

window.watch( "x", function( id, oldVal, newVal ){
    alert( id+' changed from '+oldVal+' to '+newVal );

    // you must return the new value or else the assignment will not work
    // you can change the value of newVal if you like
    return newVal;
});

x = 20; //alerts: x changed from 10 to 20


/*
For a local scope (better as always)
*/
var myObj = {}

//you can watch properties that don't exist yet
myObj.watch( 'p', function( id, oldVal, newVal ) {
    alert( 'the property myObj::'+id+' changed from '+oldVal+' to '+newVal );
});


myObj.p = 'hello'; //alerts: the property myObj::p changed from undefined to hello
myObj.p = 'world'; //alerts: the property myObj::p changed from hello to world

// stop watching
myObj.unwatch('p');
使用和:

或者,如果以后不需要该变量的值:

set variable(value) {
    // variable changed
}

当值更改时,是否要激发某些内容?请更具体一点。IE和Safari不支持。我有同样的问题,我想检查变量是否被分配了新值,即使旧值和新值是相同的。比如:var num1=10。。。。num1=10。@noyruto88默认语言构造将不允许您以任何方式执行此操作。这是因为javascript引擎甚至可以对赋值运算符进行优化,使其在完全相同的情况下不会覆盖该值。@noyruto88解决此问题的方法是创建某种“容器”类,该类封装需要跟踪的元素。类似于
var a=Container(5)
。然后,要更改值,您可以执行
a.setNewValue(10)
并在
容器中内部记录更改。
set variable(value) {
    // variable changed
}