绝大多数场合应该使用===,只有检测null/undefined的时候可以使用x==null,因为一般我们不区分null和undefined,即将x=null作为x===null || x===undefined的缩写。
==的比较看似比较方便,比如1==‘1’,但是会埋下隐患,引入隐蔽的错误,最常见的就是让字符串和数值相加会先将数值转化为字符串,然后进行字符串连接,例如
if(x==10){
x+=5;
...
}
如果传入参数为‘10’的话,x的结果会变成‘105’,可能会引入隐蔽的错误。
总之,对于大型编程来说,==这种小便利无法与其带来的风险相比,而且会优先转化为字符串进行比较,结果可能会出乎意料之外。