变量值是否发生了变化

时间:2010-06-16 06:25:46

标签: javascript

如何在javascript中查找变量值是否发生变化。

5 个答案:

答案 0 :(得分:11)

埃姆?

var testVariable = 10;
var oldVar = testVariable;

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

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

答案 1 :(得分:4)

有一种方法可以观察变化的变量:Object::watch - 下面的一些代码

/*
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');

答案 2 :(得分:2)

使用getterssetters

var _variable;
get variable() {
    return _variable;
}
set variable(value) {
    _variable = value;
    // variable changed
}

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

set variable(value) {
    // variable changed
}

答案 3 :(得分:1)

如果您是firefox用户,可以使用firebug进行检查。如果您使用IE,我们可以放置警告语句并检查变量的值。

答案 4 :(得分:0)

通过将其与已知状态进行比较,看它是否有所不同。如果你正在寻找像variable.hasChanged这样的东西,我很确定它不存在。