ES6 - Object.is()

Object.is() 会在下面这些情况下认为两个值是相同的:

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

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

      当然,严格相等运算符 === 也不会对操作数进行类型转换,但是它会把 -0 和 +0 这两个数值视为相同的,还会把两个 NaN 看成是不相等的。

时间: 2024-07-28 17:47:40

ES6 - Object.is()的相关文章

[ES6] Object.assign (with defaults value object)

function spinner(target, options = {}){ let defaults = { message: "Please wait", spinningSpeed: 5, cssClass: ".is-spinning" }; let settings = Object.assign( {}, defaults, options ); if(settings.spinningSpeed !== defaults.spinningSpeed)

es6 Object 数据属性和访问器属性

原文 :http://www.jb51.net/article/91698.htm 总结 ES5提供了Object.getOwnPropertyDescripter()方法来获取给定属性的描述符. ps:getOwnPropertyDescripter 该方法接收两个参数:属性所在的对象和要读取其描述符的属性名称.结果会返回一个对象,如果是访问器属性,返回的对象有configuable.enumerable.get和set:如果是数据属性,这个返回对象的属性包括configuable.enume

web前端面试题必看

69.Javascript的typeof返回哪些数据类型:列举3种强制类型转换和2中隐式类型转换 1)返回数据类型 undefined string boolean number symbol(ES6) Object Function 2)强制类型转换 Number(参数)  把任何类型转换成数值类型. parseInt(参数1,参数2)  将字符串转换成整数 parseFloat()将字符串转换成浮点数字 string(参数):可以将任何类型转换成字符串 Boolean()  可以将任何类型的

Webpack 入门指南 - 3. Hello, Angular2!

Webpack 入门指南 - 1.安装 Webpack 入门指南 - 2.模块 这一次,我们使用 Webpack 来打包 Angular 2 的应用. 与官方的 Hello, Angular 2 项目相比,我们不使用 System.js,而是使用 TypeScript 直接编译,然后使用 Webpack 打包生成代码. 1. 下载 Angular 2 以及依赖包 修改我们的 package.json 文件,添加 Angular 2 涉及的包,和 Angular 2 所依赖的包,以后,我们可以慢慢

用vue开发一个app(3,三天的成果)

前言 一个vue的demo 源码说明 项目目录说明 . |-- config // 项目开发环境配置 | |-- index.js // 项目打包部署配置 |-- src // 源码目录 | |-- components // 公共组件 | |-- header.vue // 页面头部公共组件 | |-- footer.vue // 页尾头部公共组件 | |-- index.js // 加载各种公共组件 | |-- config // 路由配置和程序的基本信息配置 | |-- routes.js

你不知道的javaScript笔记(4)

类型: JavaScript 有7种内置类型 空值 (null) 未定义(undefined) 布尔值(boolean) 数字(number) 字符串(string) 对象(object) 符号(symbol) 除对象以外,其他统称为“基本类型” 用typeof 运算符来查看值的类型 typeof undefined  === "undefined";   // true typeof true === "boolean";  // true typeof 42 =

angular项目中各个文件的作用

原文地址 https://www.jianshu.com/p/176ea79a7101 大纲 1.对angular项目中的一些文件的概述 2.对其中一些文件的详细描述 2.1.package.json 2.2.tsconfig.json 2.3.Polyfills 对angular项目中的一些文件的概述 angular-cli.json Angular CLI 的配置文件. 在这个文件中,你可以设置一系列默认值,还可以配置项目编译时要包含的那些文件. karma.conf.js karma 测试

浅析深拷贝与浅拷贝--【godDie】--

--理解深拷贝与浅拷贝,必须要理解值传递与引用传递的概念. 值传递:传递的是基本数据类型的数据(数据不会发生改变) 引用传递:传递的是对象(数组.对象)对象存储在堆空间中,自身可以发生改变 --浅拷贝及其实现的方式 浅拷贝: 当一个对象拷贝另一个对象的数据的时候,只要一个对象的数据发生改变另一个对象的数据也会发生改变 ,因为浅拷贝拷贝的是引用的地址 实现浅拷贝的方式 第一种方式 要求对象必须是多层的状态下才能实现浅拷贝 //ES6 Object.assign() 参数1:target 参数2:对

[转] 从零构建 vue2 + vue-router + vuex 开发环境到入门,实现基本的登录退出功能

这是一个创建于 738 天前的主题,其中的信息可能已经有所发展或是发生改变. 前言 vue2 正式版已经发布将近一个月了, 国庆过后就用在了公司的两个正式项目上, 还有一个项目下个月也会采用 vue2 进行重构 选择它没什么理由,如果非要说一个理由 那就是它的中文文档远比 react , angularjs 要友好 github:https://github.com/lzxb/vue2-demo 源码说明 项目目录说明 . |-- config // 项目开发环境配置 | |-- index.j