zoukankan      html  css  js  c++  java
  • 关于js操作符需要注意的地方

    本文仅仅介绍部分js操作符在实际应用中需要注意的地方。

    1. 布尔操作符:
      //1.逻辑与操作属于短路操作,即如果第一个操作数能够决定结果那么就不会再对第二个操作数求值
        var found=true;
        var result=(found&&variable);  //报错
        alert(result);
      //上面的代码之所以报错是因为found为true,逻辑与操作符会继续对variable进行求值,但variable变量未声明,故报错
      
      //逻辑或也是短路操作,但是逻辑或第一个操作数的求值结果为true时才不会对第二个操作数求值。这一点和逻辑与相反。
    2. 关系操作符:
      //1.如果两个操作数都是字符串则比较字符串对应的字符编码值,2.任何操作数与NaN进行关系比较结果都是false,包括NaN与NaN本身的比较也是false
      
       var result="a"<3;   //false,因为“a”被转换为NaN了
    3. 相等操作符:相等和不相等是先对操作数进行强制转型然后在比较他们的相等性,遵循规则如下:
      1. 如果有一个操作数是布尔值,则在比较相等性之前先将起转换为数值;
      2. 如果有一个操作数是字符串,另一个操作数是数值,则在比较前先将字符串转换为数值;
      3. 如果一个操作数是对象,另一个不是,则调用对象的valueOf()方法,用得到的结果按照前面的规则进行比较,如果没有valueOf()方法则调用toString()方法对结果做比较;
      4. null和undefined是相等的,这是ECMAScript规范里规定的;
      5. 在比较相等性之前不能将null和undefined转换成其它任何值;
        表达式 表达式
        null==undefined true true==1 true
        NaN!=NaN true true==2 false
        false==0 true undefined==0 false
        null==0 false    
    4. 全等和不全等:除了在比较之前不转换操作数之外全等和不全等操作符与相等和不相等操作符没有什么区别,全等操作符由(===)表示;
      var result=("55"==55);  //true,转换后相等
      var result2=("55"===55); //false,数据类型不同,全等不会转换数据类型

      用全等还是用相等看实际情况,不过优先推荐使用全等,因为相等和不相等存在数据类型转换问题。

  • 相关阅读:
    Stack Overflow 2016最新架构探秘
    (转)个人职业规划中如何使自己的职业生涯升华
    (转)软件架构师应该知道的97件事
    (转)一共81个,开源大数据处理工具汇总
    (转) 架构师的能力模型
    (转)数据库表分割技术浅析(水平分割/垂直分割/库表散列)
    (转)乐观锁与悲观锁——解决并发问题
    (转)从“如何设计用户超过1亿的应用”说起—数据库调优实战
    (转)浅谈数据库的水平拆分
    (转).NET Memory Profiler 使用简介
  • 原文地址:https://www.cnblogs.com/mybwhy/p/7250749.html
Copyright © 2011-2022 走看看