关于恒等于(===)和非恒等于(!==)

  在看Ext的源代码的时,遇到"==="和"!=="的写法,一时不解,就在群里资讯了下,才知道它们各自表示的含义。

  呵呵,看来有网络还真是方便:)

  引用

  ·恒等于(===):检查两个操作数是否一样,也就是检查没有进行数据类型转换的操作数的值是否相等。

  ·非恒等于(!==):检查两个操作数的值在没进行数据转换前是否不一样。

  以下为讨论聊天记录节选:

  枫岩 09:24:01

  if(index !== -1){

  ...

  }

  表示什么意思?有谁知道?

  路上行人 09:26:32

  ===恒等于..

  路上行人 09:26:41

  !==不恒等于..

  枫岩 09:33:58

  呵呵,根据路上行人说的“恒等于”搜索了下:

  3、使用恒等于和非恒等于操作符(===和!===)

  1)严格比较两个变量的值是否相等,不会做任何转换的工作,如 2==="2"是不成立的,返回false

  枫岩 09:34:13

  <script type="text/javascript">

  <!--

  alert(2=="2");

  alert(2==="2");

  alert(2!=="2");

  //-->

  </script>

  枫岩 09:36:32

  嘿嘿,这个详细点:

  ·恒等于(===):检查两个操作数是否一样,也就是检查没有进行数据类型转换的操作数的值是否相等。

  ·非恒等于(!==):检查两个操作数的值在没进行数据转换前是否不一样。

  路上行人 09:39:41

  if (index!==1)是什么意思...枫岩??

  枫岩 09:43:04

  index!==1

  相当于:

  !(index===1)

  枫岩 09:43:10

  应该是这样的

  枫岩 09:43:18

  我试试

  枫岩 09:44:07

  <script type="text/javascript">

  <!--

  var a = (2!=="2");

  var b = !(2==="2");

  alert(a === b);

  //-->

  </script>

  枫岩 09:44:40

  2==="2" 的比较还要求数据类型一样

  枫岩 09:44:45

  才返回真

  Z 09:49:30

  ===是这样的

  Z 09:49:44

  If the two values have different types, they are not identical.

  Z 09:51:52

  ==应该是把两个数都转为CHAR然后比较值

  ===是先比较类型是否相同

  枫岩 09:54:42

  测试了下,确实如此

  <script type="text/javascript">

  <!--

  var o1 = {a:"a"};

  var o2 = o1.toString();

  alert(o1==o2);

  alert(o1===o2);

  //-->

  </script>