从JavaScript的语言类型上来说,它是一个弱类型的解释型语言。所以他的判断,比较方法比较有趣(多坑)!
正常的比较方式是 >, <, ==, >=, <=这些是没有什么问题的。
但是弱类型就带来了一个新的比较符号“===”,“==”比较的时候是会对数据的类型进行一定范围上的转化的,比如:
var a = 1;
alert(a == true);
// 结果为:true
但是在“===”里面就是会对数据类型也进行判断的——绝对等于。例如
var a = 1;
alert(a === true);
//显示结果为:false
- 如果类型不同,就不相等。
- 如果两个都是数值,并且是同一个值,那么相等。
- 值得注意的是,如果两个值中至少一个是NaN,那么不相等(判断一个值是否是NaN,可以用
isNaN()
或Object.is()
来判断)。 - 如果两个都是字符串,每个位置的字符都一样,那么相等;否则不相等。
- 如果两个值都是同样的Boolean值,那么相等。
- 如果两个值都引用同一个对象或函数,那么相等,即两个对象的物理地址也必须保持一致;否则不相等。
- 如果两个值都是null,或者都是undefined,那么相等。
下面就是js的判断语句了,从使用来说,他和java语言的判断语句很相像。但是又有一些不同。
单纯的判断就不说了。
在复合的判断条件上 &&,||的使用就会有一些坑了。
&&说明的是逻辑与,也就是当我们把一个判断条件理解为本质的0,1为判断结果的时候。&&就是一个乘法运算。他会把前后两个结果相乘,获得一个最终值作为答案。
||说明是逻辑或,这个判断只需要一个为真,判断结果就是真。
当两个逻辑运算符同时使用的时候,就要考虑代码的运行方向是从左向右运行的。所以判定的条件也是从左到右获得判断依据的,应该选择使用括号来改变判断优先级,完成自己想要的判断。
在判断String是否为空,或者对象是否为空的时候。值得注意的是:如果对象是从后端或者前台获取的,不是js自身定义的。就要考虑是null 或者 ""、还是undefined。这是三个不同的情况,需要对其都进行判断。不然可能你的判断会出问题。