资讯专栏INFORMATION COLUMN

JS比较运算符

ernest.wang / 525人阅读

摘要:对于两个数值相同的数字应该使用严格比较运算符,和任何值不相等,包括其自身,正数零等于负数零。对于和类型而言,应使用严格比较运算符比较其自身,使用比较运算符进行互相比较。

严格比较运算符 ===

仅当两个操作数的类型相同且值相等为 true,不做类型转换,比较容易理解

类型转换比较运算符 ==

当比较数字和字符串时,字符串会转换成数字值。 JavaScript 尝试将数字字面量转换为数字类型的值。 首先, 一个数学上的值会从数字字面量中衍生出来,然后得到被四舍五入后的数字类型的值。

如果其中一个操作数为布尔类型,那么布尔操作数如果为true,那么会转换为1,如果为false,会转换为整数0,即0。

如果一个对象与数字或字符串相比较,JavaScript会尝试返回对象的默认值。操作符会尝试通过方法valueOf和toString将对象转换为其原始值(一个字符串或数字类型的值)。如果尝试转换失败,会产生一个运行时错误。

注意:当且仅当与原始值比较时,对象会被转换为原始值。当两个操作数均为对象时,它们作为对象进行比较,仅当它们引用相同对象时返回true。

比较的特点

对于两个拥有相同字符顺序,相同长度,并且每个字符的位置都匹配的字符串,应该使用严格比较运算符。

对于两个数值相同的数字应该使用严格比较运算符,NaN和任何值不相等,包括其自身,正数零等于负数零。

对于两个同为true或同为false的布尔操作数,应使用严格比较运算符。

不要使用严格比较运算符或比较运算符来比较两个不相等的对象。

当比较一个表达式和一个对象时,仅当两个操作数引用相同的对象(指针指向相同对象)。

对于Null 和 Undefined 类型而言,应使用严格比较运算符比较其自身,使用比较运算符进行互相比较。

补充:Boolean对象

Boolean([value]) value 可选,用来初始化 Boolean 对象的值。

如果第一个参数不是布尔值,则会将其转换为布尔值。
如果省略该参数,或者其值为 0、-0、null、false、NaN、undefined、或者空字符串(""),则生成的 Boolean 对象的值为 false。
如果传入的参数是 DOM 对象 document.all,也会生成值为 false 的 Boolean 对象。
任何其他的值,包括值为 "false" 的字符串和任何对象,都会创建一个值为 true 的 Boolean 对象。

注意不要将基本类型中的布尔值 true 和 false 与值为 true 和 false 的 Boolean 对象弄混了。

当 Boolean 对象用于条件语句的时候(译注:意为直接应用于条件语句),任何不是 undefined 和 null 的对象,包括值为 false 的 Boolean 对象,都会被当做 true 来对待。例如,下面 if 语句中的条件为真:

var x = new Boolean(false);
if (x) {
  // 这里的代码会被执行
}

基本类型的布尔值不受此规则影响。例如下面的 if 语句的条件为假:

var x = false;
if (x) {
  // 这里的代码不会执行
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/104840.html

相关文章

  • Js中相等算符如何转换操作数

    摘要:可以理解为,它们其实都是表示没有值没有值的变量和没有值的对象,因此认为它们相等。使用运算符时,也不必考虑各种复杂的规则拼接在使用号进行拼接时,会先将数字转换为字符串,再进行拼接操作。 在将两个类型不同的值进行比较时,Js会自动将其中一个值转换为另一个值的类型,再进行比较 比较数字与字符串 这种情况下,都会将字符串转换为数字,再对两个数字进行比较 99 == 98 99 == 98 fa...

    dabai 评论0 收藏0
  • js温故而知新——学习廖雪峰的js教程

    摘要:在设计时,有两种比较运算符第一种是比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果第二种是比较,它不会自动转换数据类型,如果数据类型不一致,返回,如果一致,再比较。 数据类型和变量 数据类型计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据...

    taohonghui 评论0 收藏0
  • JS中的关系比较与相等比较运算

    摘要:在中的关系比较运算,指的是像这种大小值的关系比较。而相等比较,可区分为标准相等比较与严格相等比较两大种类。 在JS中的关系比较(Relational Comparison)运算,指的是像x < y这种大小值的关系比较。 而相等比较,可区分为标准相等(standard equality)比较x == y与严格相等(strict equality)比较x === y两大种类。严格相等比较会...

    paraller 评论0 收藏0
  • js面试题(下)

    摘要:短路运算返回值是什么又称为短路或,短路如果左侧为真,则不再进行右侧运算,同时返回左侧表达式运算结果。上面是不存在的,所有结果为,转成就是,那么就会运算,把赋值给的同时,返回值也是,所以打印返回结果是函数内部变量有哪些 DOM元素e的e.getAttribute(propName)和e.propName有什么区别和联系 e.getAttribute(),是标准DOM操作文档元素属性的方...

    zhoutao 评论0 收藏0
  • JS基础】类型转换知多少

    摘要:正确的解释是允许在相等比较中进行强制类型转换,而不允许。参考资料小议下字符串比较大小中的强制类型转换核心概念类型转换对象和方法隐式类型转换小结 开胃菜 先说一个题外话,我在工作中遇到一个问题,需要比较 08:00 和 09:00 的大小,最后我找到三种方法: 在两个字符串前后各拼接相同的年月日和秒,拼成完整的时间格式进行比较: var head = 2016-01-01 var fo...

    AdolphLWQ 评论0 收藏0

发表评论

0条评论

ernest.wang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<