首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js中的相等与不相等

在转换不同的数据类型时,相等和不相等操作符遵循下列基本规则: 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false 转换为0,而 true 转换为1; 如果一个操作数是字符串,另一个操作数是数值...,在比较相等性之前先将字符串转换为数值; 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类 型值按照前面的规则进行比较; null 和undefined 是相等的...要比较相等性之前,不能将null 和undefined 转换成其他任何值。 如果有一个操作数是NaN,则相等操作符返回false,而不相等操作符返回true。...重要提示: 即使两个操作数都是NaN,相等操作符也返回false;因为按照规则,NaN 不等于NaN。 如果两个操作数都是对象,则比较它们是不是同一个对象。...如果两个操作数都指向同一个对象, 则相等操作符返回true;否则,返回false。

1.8K51
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS中相等(==)和等全(===)的区别与练习

    JS中相等()和等全(=)的区别与练习 简介 简介 相等()与全等(=)的主要区别是,会进行类型转换,然后=不会进行类型转换,需要内容和类型都相等,才会返回true。...* 案例二 在js里面,true是bool类型,true可以转换成整形的1,false转换成整形的0。...null与undefined都是假值所以相等,区别是null代表这个位置不应该有值或者为空值,undefined指的是未声明的变量或者没用赋值的变量。...是已经定义了的一个空字符串 * 案例四 ‘false’ == false; false // false强转之后为0 不等于左边的字符串 // 对于NaN代表的是一个范围的意思,一个不是Number的类型中的任意一个...,所以 // 它自身不会与自身相等,所以更不会与别的类型相等 NaN == NaN; false NaN == NaN; false NaN === false; false * 案例五 var

    3100

    JavaScript 中的相等性判断

    ES2015中有四种相等算法: 抽象相等比较 (==) 严格相等比较 (===): 用于 Array.prototype.indexOf, Array.prototype.lastIndexOf, 和...最后,如果两个值都是 number 类型,当两个都不是 NaN,并且数值相同,或是两个值分别为 +0 和 -0 时,两个值被认为是全等的。...对于除了数值之外的值,全等操作符使用明确的语义进行比较:一个值只与自身全等。对于数值,全等操作符使用略加修改的语义来处理两个特殊情况:第一个情况是,浮点数 0 是不分正负的。...规范中的相等、严格相等以及同值相等 在 ES5 中, == 相等在 Section 11.9.3, The Abstract Equality Algorithm; === 相等在 11.9.6, The...提示:请先阅读严格相等的算法)ES5 也提供了 same-value 相等, Section 9.12, The SameValue Algorithm ,用在 JS 引擎内部。

    98910

    JavaScript 中的4种相等算法

    点击“博文视点Broadview”,获取更多书讯 在 JavaScript 中如何判断两个值相等,这个问题看起来非常简单,但并非如此,在 JavaScript 中存在 4 种不同的相等逻辑,如果你不知道他们的区别...ECMAScript 是 JavaScript 的语言规范,在ECMAScript 规范[1]中存在四种相等算法,如下图所示: 上图中四种算法对应的中文名字如下,大部分前端应该熟悉严格相等和非严格相等...严格相等解决了非严格相等中隐式转换带来的问题,但也丢失了隐式转换带来的便利,对于类型可能不一致的情况下,比如从表单中获取的值都是字符串,保险的做法是,在比较前手动类型转换,代码示例如下: 1 === Number...const a = 0 / 0; // NaN const b = 'a' / 1; const c = undefined + 1; // NaN 在严格相等中,NaN 是不等于自己的,NaN 是(x...,规范中叫做 SameValueZero,同值零和严格相等功能一样,除了处理 NaN 的方式,同值零认为 NaN 和 NaN 相等,这在判断 NaN 是否在集合中的语义下是非常合理的。

    45320

    js中字符串转换为数值的两种方法的区别

    在js中字符串转换为数值的方法有三种:转换函数,强制类型转换,隐式转换 1.转换函数 parseInt() //将字符串转换为整型 parseFloat() //将字符串转换为浮点型 转换函数在进行类型转换时是可以传入参数的...,默认转换为10进制,转换成功后返回的是整数类型的数值。...例:1. parseInt('AB3', 16) //返回结果:2739,表示将字符串转换为16进制的数值 2.parseInt('13', 10) //返回结果:13,表示将字符串转换为10...进制的数值 3.parseInt('172', 8) //返回结果:122,表示将字符串转换为8进制的数值 4.parseInt('0123', 4) //返回结果:27,表示将字符串转换为...4进制的数值 5.parseInt('13', 6) // 返回结果:9,表示将字符串转换为6进制的数值 值得注意的是: (1)转换函数不只是能转换2,8,16等进制,他可以转换为任意进制;

    2.8K30

    JS中对数字(含有小数的)进行相乘后,数值不正确的问题

    昨晚测试人员测试的时候,偶然遇到了个小数相乘的问题,后来找了一下博客,才发现原来是JS浮点运算的bug,故在此记录了一下,避免我忘记。...背景 当时前台在页面上展示时是65.32,但是我后来查后台日志时发现传到后台时的数值为6531.999999999999,潇洒以为是我们后台的原因,我后来查了代码发现是由于前台传金额与后台不一致,故被后台拦截...然后我去看了前台的js代码,发现展示的金额确实没问题,但是在订单提交的时候出了问题。 image.png image.png 这样直接算出来的确实是有问题的。...(2)这个和数据结构有关系 整数型自动转换成正型计算 小数型直接转成double型计算 这是在内存中运算的时候必须这样 你该知道计算机只认识0和1吧 具体的就是浮点精准度的问题 float 精确到小数点后...中对数字含有小数的进行相乘后数值不正确问题

    2.4K20
    领券