Javascript 变量的值是否已更改
如何在javascript中查找变量值是否已更改。如果您是firefox用户,可以使用firebug进行检查。如果您使用IE,我们可以输入警报语句并检查变量值。EhmJavascript 变量的值是否已更改,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
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
}