2 u012376500 u012376500 于 2016.05.12 00:00 提问

js number相等却返回false

在js中,我写了个这样子的很简单的function:

 function isEqual(a, b) {
            if(a.index==b.index){
                console.log("in equal:"+a.index +"," + b.index+";");
                console.log("type:"+typeof(a.index)+"," +typeof(b.index)+";");
                console.log("in equal:"+a.index==b.index);
            }
            return a.index == b.index;
        }

中间的输出是我发现不对自己加的,控制台输出这样:

图片说明

我就很纳闷呀,if的条件都进入了,类型和数值都一样了,但是为什么返回的就是false?

1个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.05.12 00:05
已采纳
 是你没加括号吧
 console.log("in equal:"+a.index==b.index);
 改成
 console.log("in equal:"+(a.index==b.index));
 不加括号先算前面字符串连接,连接后成in equal:30,在于b.index比较值是否一样
u012376500
u012376500 谢谢,居然犯了一个那么愚蠢的错误。。。
大约 2 年之前 回复
caozhy
caozhy 正解
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java为什么两个值相等的对象==比较返回false而两个值相等的不同类型的的基本数据类型返回true
Java为什么两个值相等的对象==比较返回false而两个值相等的不同类型的的基本数据类型返回true
java equals 比较两个字符串,总是返回false
int len = 0; while((len = is.read(buf)) != -1 ) { String convertedText = new String(buf,0,len).toUpperCase(); System.out.println("convertedText = " + "--"+convertedText +"--")
js里面null,0,"",false,undefined是否相等问题
最近遇到一个js相等问题,0==‘’ 答案居然是true,本人本来以为是false的。然后去网上查了一下。最近也去本地试一下,结果如下 对于相等的情况如上图,还有就是undefined、null、""、0、false这五个值在if语句中做判断,都会执行false分支
js基础之关于Boolean及相等运算符的隐式类型转换
Boolean函数根据 w3c规范 布尔对象共有这几种方法: 方法 描述 toSource() 返回该对象的源代码。 toString() 把逻辑值转换为字符串,并返回结果。 valueOf() 返回 Boolean 对象的原始值。 布尔值常用于JavaScript中的控制语句中。例如Jav
Java中打印出来完全相同的两个字符串,用equals方法比较返回的却是false的原因
今天遇到一个奇怪的问题,两个字符串打印出来完全一样,可是用equals比较就是返回false,单独写了两个字符串打印比较也是true,到底什么原因呢。 原来一个是通过ResourceBundle读取资源文件时资源文件的编码和程序文件的编码不一样,结果出现了不可见字符,把资源文件也设置成utf-8编码后就好啦。 参考: https://zhidao.baidu.com/q
C#两字符串明明相等确返回false
因为bom,而且bom用trim函数去不掉
js两个相同字符串不相等问题
今天处理js时,发现一个奇怪的问题,明明两个字符串相等,但
Effective STL: Item 21:永远让比较函数对相同元素返回false
  Item 21:永远让比较函数对相同元素返回false 让我展示些比较酷的东西。构建一个set,比较类型用的是less_equal,然后insert一个10:set > s;               // s is sorted by “”s.insert(10);                               // insert the value
JS判断类型及强制类型转换
1.判断整数es6的Number.isInteger:Number.isInteger(4); //true Number.isInteger(4.00); //true Number.isInteger(4.1); //fasle或者时polyfill:function isInteger(num){ return typeof num === 'number
ajax返回字符串,前台页面比较为false
奇怪了半天,命名alert输出结果和比较字段的结果是一样的,可结果一直是false。后来在下面的帖子中找到解决方法,受教了。 原文:http://www.iteye.com/problems/70079