==和===长得挺像的,!=和!==也挺像的,通过小例子看出他们的区别:

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var a=100;
var b="100"; // == 先转化成统一类型,再比较(隐式类型转换)
document.write(typeof(a)+" "+typeof(b));
alert(a==b); //true
alert(a!=b); //false
alert(a===b); // false
alert(a!==b); //true
</script>
</body>
</html>

简单的说,===就是全等判断,==则是先转化再判断(计算机多了一个步骤)
对于高级数据类型,两者都进行指针地址的比较。

接下来看看JS 对数字字符串的'-'操作:


<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>my test</title>
<script>
var a="100";
var b="34";
alert(a+b); //直接字符串相连 '+'的两种效果: 连接字符串,数值加法
alert(a-b); //先隐式转换,再计算,最后出结果
</script>
</head>
<body>
</body>
</html>

结果:

10034

66

'-'对于数字字符串的操作也是多了一个步骤,然后得到了一个"正确"的答案。