Javascript 变量比较
我有一个简单的Javascript问题,我想比较两个变量,但不知何故它不能正常工作。我甚至检查了变量的类型是否相同。请帮忙。 具体地说,我得到了数字警报,我甚至得到了当前计数器的警报是5,总数是5,尽管我希望它输入“then” 试试这个Javascript 变量比较,javascript,Javascript,我有一个简单的Javascript问题,我想比较两个变量,但不知何故它不能正常工作。我甚至检查了变量的类型是否相同。请帮忙。 具体地说,我得到了数字警报,我甚至得到了当前计数器的警报是5,总数是5,尽管我希望它输入“then” 试试这个 function fun(idCount, finalCallback) { var self = this; this.idCount = parseInt(idCount, 10); var counter = 0; var
function fun(idCount, finalCallback) {
var self = this;
this.idCount = parseInt(idCount, 10);
var counter = 0;
var strings = {};
this.register = function(str, id) {
counter++;
strings[parseInt(id, 10)] = str;
if(counter == self.idCount) {
alert("Going to override");
//blabla
} else {
alert("Current counter is: " + counter + " Total " + idCount + ". Types: " + typeof counter + " and " + typeof idCount);
}
}
}
要指出的是,如果使用==则两个对象的类型是否相同并不重要 例如:
"0" == 0 // true
要强制进行类型比较,请使用==
0 === 0 // true
请记住将基数参数包含到
parseInt
:例如parseInt(id,10)
,因为它们无论如何都是数字,我相信我真的不需要进行解析。但是,为什么数字明显相同,但比较失败呢?使用self就做到了。但你能解释一下原因吗?我读了self的意思(上下文切换),但如果我实际显示变量,值似乎是相同的。那么为什么呢?在JavaScript中,对象是使用函数创建的。因此,如果您在任何函数中引用此
,它将引用该函数本身。在您的情况下,如果访问函数this.register中的idCount,它将显示值,但this.idCount不显示。希望你清楚。谢谢!离理解Javascript又近了一步。啊,痛!:)
0 === 0 // true