美文网首页
为什么我不使用JS的==运算符

为什么我不使用JS的==运算符

作者: shadow123 | 来源:发表于2017-06-12 13:47 被阅读0次

相等运算符

相等运算符(==),比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。

相等运算符.png

相等运算符的缺点

'' == '0'           // false
0 == ''             // true
0 == '0'            // true

2 == true           // false
2 == false          // false

false == 'false'    // false
false == '0'        // true

false == undefined  // false
false == null       // false
null == undefined   // true

' \t\r\n ' == 0     // true

相等运算符返回true的太多,反正我是记不住,我也不想再记这些乱七八糟的东西,所以我不使用相等运算符,因此要使用严格相等运算符。

严格相等运算符

严格相等运算符(===)比较它们是否为“同一个值”。如果两个值不是同一类型,严格相等运算符(===)直接返回false。

严格相等运算符.png

不同类型的值

如果两个值的类型不同,直接返回false。

1 === "1" // false
true === "true" // false

同一类的原始类型值

同一类型的原始类型的值(数值、字符串、布尔值)比较时,值相同就返回true,值不同就返回false。

1 === 0x1 // true

需要注意的是,NaN与任何值都不相等(包括自身)。另外,正0等于负0。

NaN === NaN  // false
+0 === -0 // true

同一类的复合类型值

两个复合类型(对象、数组、函数)的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象。

{} === {} // false
[] === [] // false
(function (){} === function (){}) // false

如果两个变量引用同一个对象,则它们相等。

var v1 = {};
var v2 = v1;
v1 === v2    // true

undefined 和 null

undefined和null与自身严格相等。

undefined === undefined // true
null === null // true

由于变量声明后默认值是undefined,因此两个只声明未赋值的变量是相等的。

var v1;
var v2;
v1 === v2 // true

严格不相等运算符

严格相等运算符有一个对应的“严格不相等运算符”(!==),两者的运算结果正好相反。

1 !== '1' // true

同样的,我也不使用不相等运算符,使用严格不相等运算符。

相关文章

  • JavaScript基本语法笔记

    变量 使用关键字var来定义变量,js的变量是弱类型,var不写也可以 运算符 算术运算符 var a = 317...

  • 比较运算符

    前端学习分享(js中比较运算符的使用) 本文旨在搞清楚比较运算符的用法和场景,在js中比较运算符有以下8个 == ...

  • JavaScript 02 (运算符和选择结构)

    js的关系运算符,js的逻辑运算符,js的赋值运算符,js的运算符的优先级问题,js的自增和自减,js的选择结构 ...

  • 为什么我不使用JS的==运算符

    相等运算符 相等运算符(==),比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较...

  • js 中的 null

    null 代表空值,是JS七中内置类型的之一 特点一 使用typeof 运算符对 null 进行运算,得到返回不不...

  • 运算符及js操作属性

    关系运算符 相等运算符 条件运算符 运算符的优先级 代码块 js操作属性 js操作style属性 js操作clas...

  • 运算符的优先级、代码块

    运算符的优先级: , 运算符 使用,可以分割多个语句,一般可以在声明多个变量时使用 代码块: JS中的代码块,...

  • 2020-03-16

    JavaScript 初识 《① JS 速览——进入 JS 的世界》[编号:js_01] 《② 运算符、运算符优先...

  • JavaScript散乱(三、对象,BOM,DOM)

    js对象 使用特殊的属性名,不能使用.方式操作 in 运算符 通过该运算符可以检查一个对象中是否包含有指定的属性,...

  • JS操作属性、函数

    条件运算符 运算符的优先级 代码块 JS操作属性 JS换肤 JS操作style属性 JS操作

网友评论

      本文标题:为什么我不使用JS的==运算符

      本文链接:https://www.haomeiwen.com/subject/kislqxtx.html