美文网首页
Javascript学习笔记——4.9 关系表达式

Javascript学习笔记——4.9 关系表达式

作者: IFELSE | 来源:发表于2018-03-22 08:43 被阅读0次

关系表达式用于测试两个值之间的关系,根据关系返回true或false。

比较相等不相等

  • ===
    恒等运算符或严格相等运算符,比较过程没有类型转换。
  • !== 不严格相等
    ===的求反
  • == 相等运算符
    这个相等比较宽松,可以允许类型转换。
  • != 不相等
    ==的结果求反

javascript对象的比较是引用的比较,不是值的比较。对象只和其本身相等。

对象向原始值的转换规则:日期类通过toString()转换,其他的先通过ofValue()转换,如果没有ofValue(),再通过toString()转换。

===比较规则:
1.类型不同则不等
2.其中一个是NaN则不等,NaN和自己都不等
3.两个是字符串,必须编码、长度和每个位上字符一样才相等
4.对象、数组和函数,必须指向相同的引用才相等

==比较规则:
1.类型相同则按===的2 3 4 条比较
2.类型不同比较,先按以下转换再通过上面的2 3 4 比较:

  • null == undefined //相等
  • 数字和字符串比较,将字符串转换为数字
  • true转换为1,false转换为0
  • 其中一个是对象,把对象转换为原始值。
true == '1' //结果为true, true会转换为数字1,'1'也会转换为数字1

比大小

  • < 小于
  • > 大于
  • <= 小于等于
  • >= 大于等于

只有数字和字符串才能比较大小,如果操作数不是这两种类型,会进行类型转换。

比大小的规则:

  1. 如果操作数有对象,则转换为原始值;
  2. 如果两个操作数都是字符串,将按照字母表顺序依次比较每位字符;
  3. 如果有一个操作数不是字符串,则两个都转换为数字;
  4. 有一个操作数是NaN,则结果为false;
  5. Infinity比任何数字都大,-Inifity比任何数字都小。

字符串比较使用String.localCompare()方法更加可靠。

加号和比较运算符都可以对字符串和数字比较,但加号优先转换为字符串,比较运算符优先转换为数字。

in运算符

判断对象是否有某个属性:
左侧操作数是字符串,如果不是会转换为字符串;
右侧操作数是对象。

var person = {name:'Mike',age:23}
'name' in person //true

instanceof运算符

判断一个对象(左操作数)是否是类(右操作数)的实例。
javascript中类是通过构造函数定义的,所以右操作数就是个函数。

var d = new Date()
d instanceof Date //true
d instanceof Object //true,所有的对象都是Object的实例
  1. instanceof判断也包括父类;
  2. 左操作数不是对象的话,返回false;
  3. 右操作数不是函数的话,抛出类型错误异常。

相关文章

  • Javascript学习笔记——4.9 关系表达式

    关系表达式用于测试两个值之间的关系,根据关系返回true或false。 比较相等不相等 ===恒等运算符或严格相等...

  • AngularJS扫盲之路

    基础学习 AngularJS 表达式 与 JavaScript 表达式 类似于 JavaScript 表达式,An...

  • JavaScript基本语法

    以下是我在学习JavaScript的一些学习笔记: 语句和表达式 语句和表达式的区别在于,前者主要为了进行某种操作...

  • JavaScript中的==和===

    关系表达式 ==和===都是JavaScript中的关系表达式运算符,与对应的还有!=和!==。 ==和===运算...

  • JavaScript正则表达式学习笔记(二) - 打怪升级

    本文接上篇,基础部分相对薄弱的同学请移步《JavaScript正则表达式学习笔记(一) - 理论基础》。上文介绍了...

  • JavaScript学习笔记(五)

    慕课网JavaScript进阶篇第9章学习笔记 JavaScript进阶篇—第9章 JavaScript学习笔记(...

  • JavaScript学习笔记二

    JavaScript学习笔记二 个人学习笔记参考阮一峰的JavaScript教学学习笔记二是对学习笔记一的补充 J...

  • js高级(四)

    JavaScript高级第04天笔记 1.正则表达式概述 1.1什么是正则表达式 正则表达式( Regular E...

  • JavaScript正则表达式

    JavaScript 正则表达式 @(笔记)[正则表达式] 第一章 课程简介 1-1 JS正则表达式简介及应用 课...

  • JavaScript学习笔记三

    JavaScript学习笔记三 个人学习笔记参考阮一峰的JavaScript教学类型转换,内存,深拷贝,关于内存的...

网友评论

      本文标题:Javascript学习笔记——4.9 关系表达式

      本文链接:https://www.haomeiwen.com/subject/xvbafftx.html