当前位置: 首页 > Web前端 > CSS

JavaScript疑难杂症系列-平等判断

时间:2023-03-30 17:58:59 CSS

事件这块知识比较老套,但对我来说,需要多多梳理,多多感悟,温故知新。每次看这篇,都有不同的收获。(这里不做长篇大论,只挑重点,具体的朋友可以自行了解)参考:https://developer.mozilla.org...JavaScript提供了三种不同的值比较操作,都是严格相等的"==="松散相等"=="Object,is(es6d新特性)严格相等三个等号会进行相同的比较,不进行类型转换(如果类型不同,总是返回false),如果两个值都是数字类型,当两者都不为NaN且具有相同的值时,或者当两个值分别为+0和-0时,认为这两个值是全等的(1)不同类型ofvalues如果两个值的类型不同,直接返回false(2)比较相同类型的原始类型值和相同类型的原始类型值(数字、字符串、布尔值)时类型,值相同则返回true,值不同则返回false。(3)同一类的复合类型值比较两种复合类型(对象、数组、函数)的数据时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象.松散相等双等号将执行类型转换(1)原始类型的值。原始类型的数据将被转换为数字类型,然后进行比较。字符串和布尔值都会被转换为数值(2)对象与原始类型值进行比较。对象(这里指的是广义的对象,包括数值和函数)与原始类型值进行比较,将对象转换为原始类型值,然后进行比较(3)undefined和null与其他比较时类型的值,结果为false,相互比较时,结果为true(4)其他类型与Boolean的相等比较,会先将boolean强制转换为.toNumber();Object.is的行为方式与三重等号相同,但对NaN和-0和+0进行了特殊处理,因此最后两个不相同,Object.is(NaN,NaN)将是trueObject.is(+0,-0)最后对比图会是false,请看这张“判断图”