当前位置: 首页 > news >正文

运算符基础知识——比较运算符

x==5;

==等于x==8 为 false
===全等(值和类型)x===5 为 true;x==="5" 为 false
!=不等于x!=8 为 true
>大于x>8 为 false
<小于x<8 为 true
>=大于或等于x>=8 为 false
<=小于或等于x<=8 为 true

若两值比较是否相等,a==b;两值可能不是同一类型,==会进行默认的数据类型转换,规则如下:

    1.一个操作数是布尔值,则比较之前将其转换为数值(0或者1);

    2.一个操作数是字符串,则比较之前将其转换成为数值在比较;

    纯字符串比较,转换成ASCII码在进行比较;

    纯数字和数字字符串相比较,则将字符串数字隐式转换成数字再进行比较;

    纯数字和非数字字符串比较,都返回false;

    3.一个操作数是对象,则先调用valueOf()或者toString()方法后在用返回值比较;

    一个操作数是对象,则会先调用valueOf()或toString()方法后再用返回值比较。

    var a = {toString:function(){
      return 1;
    }},b=1;
    console.log(a==b)      // true

  

    对象 == 对象        //false,比较的是他们的地址,每个新创建对象的引用地址都不同

    var a = {b:1},h=a; console.log(a==h)       //true,引用地址一样

    var a = {b:1},b={b:1};  console.log(a==b)          //false

两个操作数都是对象,则比较他们是否是同一个对象,如果都指向同一个对象,则返回true,否则返回false;

    4、不需要任何转换的情况下,null和undefined是相等的;

    5、任何涉及NaN的操作(NaN/10)都会返回NaN;NaN与任何值都不相等,包括它本身

    6、在全等和不全等的判断上,比如值和类型都相等才返回true,否则返回false;

   

  

 

若只有一个值,判断真假时,只有(NaN,‘ ’,0,null,undefined)这五个为false,其余均为true;

    ! :取反     ,  !!:将其他数据类型转化为布尔类型。

console.log(!'0');              //false

console.log(!0);                //true

console.log(!!'1');             //true

console.log(!!0);              //false

console.log(!!true);         //true

console.log(!!'false');     //true

 

在关系运算中,‘ ’可以自动转换为0或者false;

  null==0    //false,null自动转换为0,但在比较运算上,null和undefined没有自动转换(null!=0)

   ‘’==0    //true,''字符串在比较的时候,会自动转换

console.log(isNaN('1'));                    //false

isNaN() 函数用于检查其参数是否是非数字值。如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。能自动转化为数字的isNaN()都返回false;

 

转载于:https://www.cnblogs.com/tc-progress/p/9173298.html

相关文章:

  • node升级后,项目中的node-sass报错的问题
  • Mongodb数据库连接
  • ROS常用工具
  • Java基础随笔2
  • python3练习100题——026
  • Nodejs学习笔记(七)—Node.js + Express 构建网站简单示例
  • 求最短路径(Bellman-Ford算法与Dijkstra算法)
  • 49. Group Anagrams - LeetCode
  • 1 年经验 Java 求职面试题
  • 有赞11·11:全链路压测方案设计与实施详解
  • 输入处理与安全性
  • 基于结构的距离度量
  • partprobe 和 partx 的用法
  • 开发环境问题
  • 【咸鱼教程】本地图片上传。动态GIF表情图生成
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【前端学习】-粗谈选择器
  • Java超时控制的实现
  • js 实现textarea输入字数提示
  • js面向对象
  • mac修复ab及siege安装
  • python学习笔记 - ThreadLocal
  • Service Worker
  • SOFAMosn配置模型
  • windows下使用nginx调试简介
  • 复杂数据处理
  • 手写双向链表LinkedList的几个常用功能
  • 小程序测试方案初探
  • 异常机制详解
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)一些感悟
  • *1 计算机基础和操作系统基础及几大协议
  • .net core 6 集成和使用 mongodb
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net 怎么循环得到数组里的值_关于js数组
  • .netcore 获取appsettings
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • @FeignClient注解,fallback和fallbackFactory
  • @JsonSerialize注解的使用
  • []FET-430SIM508 研究日志 11.3.31
  • [04] Android逐帧动画(一)
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [c#基础]DataTable的Select方法
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [ESP32] 编码旋钮驱动
  • [NET].NET Framework 3.5 SP1 真正的离线安装(转)
  • [PHP] 算法-字符串的左循环的PHP实现
  • [Python人工智能] 四十二.命名实体识别 (3)基于Bert+BiLSTM-CRF的中文实体识别万字详解(异常解决中)
  • [Pytorch] pytorch笔记 三
  • [Real world Haskell] 中文翻译:第三章 定义类型,流式函数
  • [SpringDataMongodb开发游戏服务器实战]
  • [STM32F407ZET6] GPIO