博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Object.is() Pollyfill
阅读量:6475 次
发布时间:2019-06-23

本文共 1010 字,大约阅读时间需要 3 分钟。

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;    }  };}

表示两个参数是否相同的 。

Object.is() 判断两个值是否。如果下列任何一项成立,则两个值相同:

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

这种相等性判断逻辑和传统的  运算符所用的不同, 运算符会对它两边的操作数做隐式类型转换(如果它们类型不同),然后才进行相等性比较,(所以才会有类似 "" == false 为 true 的现象),但Object.is 不会做这种类型转换。

这与运算符也不一样。运算符(和运算符)将数字值-0+0视为相等,并认为不等于。

Object.is('foo', 'foo');     // trueObject.is(window, window);   // trueObject.is('foo', 'bar');     // falseObject.is([], []);           // false Object.is({}, {});           // false
var test = { a: 1 }; Object.is(test, test); // true  Object.is(null, null); // true // 特例 Object.is(0, -0); // false Object.is(-0, -0); // true Object.is(NaN, 0/0); // true

 

转载于:https://www.cnblogs.com/youzhuxiaoyao/p/7814679.html

你可能感兴趣的文章
kubenetes无法创建pod/创建RC时无法自动创建pod的问题
查看>>
3 Exchange2007客户端的配置与访问
查看>>
使用IP访问SharePoint时内容查询部件访问出错
查看>>
Confluence 6 允许其他用户编辑站点欢迎消息
查看>>
Confluence 6 使用 JConsole 监控远程 Confluence
查看>>
jQuery 事件注册和绑定及this与event.target的区别浅析
查看>>
jfinal上传文件
查看>>
01.部署NopCommerce时遇到的问题
查看>>
Python基础-面向对象-描述符
查看>>
写给换工作和找工作的同学
查看>>
web服务基础之套接字、TCP协议
查看>>
nginx变量
查看>>
plupload上传
查看>>
快速构建Windows 8风格应用18-基础控件I
查看>>
如何使用CSS3与jQuery创建登录表单[教程]
查看>>
android学习
查看>>
Excel文档隐藏Sheet页的两种方式
查看>>
第一份hp pc server工作20070905
查看>>
pointer-events:none;
查看>>
运行脚本
查看>>