前言
–
今天突然听到了===觉得很好奇,便有了这篇文章。
正文
–
整体来说:
在C中,=是一种赋值运算符,==是一种关系运算符,在js中,==是比较值,===是比较类型和值。
具体来说:
在C语言中,举个例子,
(1)a=10,意思是把10赋值给a;
(2)a==10,不会改变10的值,也不会改变a的值,只是将a中的值和10进行比较,如果相等,则为Ture,反之,则为False。
在js中,举个例子,
(1)a==10,意思是将a中的值和10进行比较,如果相等,则为Ture,反之,则为False;
(2)a===10
①意思是把a的类型和值和10的类型和值进行比较,比如,a是string类型,值为10,10的类型为Int,值为10 ,即使值都是10 ,但是类型不同,它们就不相同。
②如果两个值都为int类型的,而且值都为10,那么除非其中一个或两个都是NaN(Not a Number)(这种情况它们不是等同的),否则它们是等同的。值NaN永远不会与其他任何值等同,包括它自身,要检测一个值是否是NaN,可以使用全局函数isNaN()。
③如果a和10都是string类型的,而且在串中同一位置上的字符完全相同,那么它们就完全等同。如果字符串的长度或内容不同,则不相等。
④如果a和10都是布尔型为true,或者a和10都是布尔型为false,则相等。
⑤如果a和10引用的是同一个对象、数组或函数,则相等,反之,引用的不是同一个,则不相等。
如果两个值都是null或都是undefined,它们完全相同。
总结
–
不怕不知道,就怕不知道。不管是哪个C中,只有“=”和“==”用作运算符,但是在js中,“=”“==”和“===”都非常常见。