关闭

js中的相等==

时间: 2019-07-24阅读: 862标签: 运算

概述

今天学习 jest,看文档的时候发现 jest 用到了 Object.is(),以前没有见过,所以记录下来,供以后开发时参考,相信对其他人也有用。


Object.is

如果下列任何一项相同,则 Object.is(value1, value2) 返回 true:

  • 两个值都是 undefined
  • 两个值都是 null
  • 两个值都是 true 或者都是 false
  • 两个值是由相同个数的字符按照相同的顺序组成的字符串
  • 两个值指向同一个对象
  • 两个值都是数字并且
  • 都是正零 +0
  • 都是负零 -0
  • 都是 NaN
  • 都是除零和 NaN 外的其它同一个数字


相等

  1. == 会做隐式转换,把两边的操作数的类型转化为相同。
  2. === 不会做隐式转换,但是会认为 -0 和 +0 相等,并且认为 Number.NaN 不等于 NaN。
  3. Object.is() 不会做隐式转换,但是认为-0 和 +0 不相等,并且Number.NaN 等于 NaN。

例子如下:

Object.is('foo', 'foo');     // true
Object.is(window, window);   // true

Object.is('foo', 'bar');     // false
Object.is([], []);           // false

var foo = { a: 1 };
var bar = { a: 1 };
Object.is(foo, foo);         // true
Object.is(foo, bar);         // false

Object.is(null, null);       // true

// 特例
Object.is(0, -0);            // false
Object.is(0, +0);            // true
Object.is(-0, -0);           // true
Object.is(NaN, 0/0);         // true


Object.is的polyfill

if (!Object.is) {
  Object.is = function(x, y) {
    // SameValue algorithm
    if (x === y) { // Steps 1-5, 7-10
      // Steps 6.b-6.e: +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
      // Step 6.a: NaN == NaN
      return x !== x && y !== y;
    }
  };
}
站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/4914

关闭

JS保留两位小数

以下处理结果会四舍五入:以下处理结果不会四舍五入第一种,先把小数边整数:第二种,当作字符串,使用正则匹配:注意:如果是负数,请先转换为正数再计算,最后转回负数

js各种取整方式及方法_四舍五入、向上取整、向下取整

js实现:四舍五入、向上取整、向下取整等方法。parseInt、Math.ceil、Math.round、Math.floor、toFixed等的使用

js取反运算

取反运算形式上是一个感叹号,用于将布尔值变为相反值,即true变成false,false变成true。不管X是什么类型的值,经过两次取反运算后,变成了与Boolean函数结果相同的布尔值。所以,两次取反就是将一个值转成布尔值的简便写法。

Js比较和逻辑运算符

比较和逻辑运算符用于测试 true 或 false。比较运算符在逻辑语句中使用,以判定变量或值是否相等。我们给定 x = 5,下表中解释了比较运算符:

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。

搞懂Js中的...

曾几何时,ES6/ES2015 对 Javascript 语言进行了重大升级。它引入了许多不同的新功能。其中之一就是我们可以用在任何兼容容器(对象、数组、字符串、集合、映射)前面的三个连续点。这些小点使我们能够编写更加优雅和简洁的代码

JS怎样做四舍五入?

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。例如将数据Num保留2位小数,则表示为:toFixed(Num);但是其四舍五入的规则与数学中的规则不同,使用的是银行家舍入规则

javascript如何计算1!+2!+..+10!的阶乘和?

JavaScript中计算1到10的阶乘和可以使用双层循环实现,在内层循环计算1到10的阶乘,然后在外层循环定义一个累加器将每个数的阶乘累加即可。

js 检验四则运算字符串是否合法

是可以通过检验的,并且在js中也是按数学表达式计算结果的, 但是这个算不算“合格”的数学表达式呢?这个就看具体情况了吧,要规避也比较简单

javascript逻辑运算符有哪些?

JavaScript逻辑运算符有&&(逻辑与)、||(逻辑或)、!(逻辑非)。JavaScript逻辑运算符用于测定变量或值之间的逻辑。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!