Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 变量比较_Javascript - Fatal编程技术网

Javascript 变量比较

Javascript 变量比较,javascript,Javascript,我有一个简单的Javascript问题,我想比较两个变量,但不知何故它不能正常工作。我甚至检查了变量的类型是否相同。请帮忙。 具体地说,我得到了数字警报,我甚至得到了当前计数器的警报是5,总数是5,尽管我希望它输入“then” 试试这个 function fun(idCount, finalCallback) { var self = this; this.idCount = parseInt(idCount, 10); var counter = 0; var

我有一个简单的Javascript问题,我想比较两个变量,但不知何故它不能正常工作。我甚至检查了变量的类型是否相同。请帮忙。 具体地说,我得到了数字警报,我甚至得到了当前计数器的警报是5,总数是5,尽管我希望它输入“then”

试试这个

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