About the problems of congruence and inequality, equality and inequality in JS

About the problems of congruence and inequality, equality and inequality in JS

Congruent and Incongruent

The comparison of the operands on both sides of the symbol is the same as the operator. For example, if the operands are equal, it returns true, otherwise it returns false. The equality and inequality operators do not convert the operands when comparing for equality, that is, they directly compare for equality or inequality without conversion.

congruent

Symbol: ===

let str1="1"
let str2=1
console.log(str1===str2) //false

Not all equal

symbol:! ==

let str1="1"
let str2=1
console.log(str1!==str2) //true

Equal and unequal

The equality and inequality operators also compare two operands. For example, the equality operator returns true if the two operands are equal, otherwise it returns false. However, the difference between the equality and inequality operators is that the equality and inequality operators will first perform forced type conversion on the operands, and then compare the converted operands.

equal

Symbol: ==

let str1="1"
let str2=1
console.log(str1==str2) //true
console.log(str1===str2) //false
let flag=true
let num=1
console.log(flag==num) //true
console.log(flag===num) //false

Not equal

symbol:! =

let str1="1"
let str2=1
let str3="hello"
console.log(str1!=str2) //false First type conversion, then comparison console.log(str1!==str2) //true For the equality operation, the two operands are not necessarily equal without forced type conversion.	
console.log(str2!=str3) //true	  
console.log(str2!==str3) //true

The rules for type conversion of operands for equality and inequality operators are as follows:

Boolean values ​​are directly converted to numeric values ​​for comparison: false: 0; true: 1

When a string encounters a number, it will be converted to a number and then compared.

For objects, if both operands are objects, compare whether they are the same object. If the two operands refer to the same object, return true; otherwise, return false. If one of the operands is an object, the valueOf method is called to get the original value, and then the comparison is performed (according to the above rules)

const p = new Object('zhangsan') // equivalent to const p = new String('zhangsan')
console.log(p.valueOf() == 'zhangsan') //true
console.log(p == 'zhangsan') //true
const p1={name:'zhangsan'}
let p2=p1
console.log(p1==p2) //true
p2={}
console.log(p1==p2) //false

For null and undefined, null and undefined are equal, but they will not be coerced no matter who they are compared to.

console.log(null==undefined) //true
console.log(null===undefined) //false For all equals, the return result is still false

For NaN, NaN is not equal to any value including itself. Comparison involving operators that are NaNs returns false if they are equal, and true if they are not equal.

console.log(NaN==NaN) //false
console.log(NaN!='') //true
console.log(NaN!=1) //true
console.log(NaN!={}) //true

This is the end of this article about congruence and inequality, equality and inequality in JS. For more relevant JS content about congruence and inequality, equality and inequality, please search previous articles on 123WORDPRESS.COM or continue to browse the related articles below. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Briefly explain the difference between = = (equal to) and = = = (entirely equal to) in Javascript
  • Are the Event objects between js event processing functions identical?
  • The difference between equals (==) and congruent (===) in JavaScript
  • JavaScript equality operator usage instructions
  • Solve the problem that 0.1+0.2 is not equal to 0.3 in JavaScript
  • What is the code for not equal to in javascript?

<<:  Usage of Linux userdel command

>>:  How to quickly add columns in MySQL 8.0

Recommend

Tips for data statistics in MySQL

As a commonly used database, MySQL requires a lot...

JavaScript plugin encapsulation for table switching

This article shares the encapsulation code of Jav...

Sample code for deploying ELK using Docker-compose

environment Host IP 192.168.0.9 Docker version 19...

React implementation example using Amap (react-amap)

The PC version of React was refactored to use Ama...

Centering the Form in HTML

I once encountered an assignment where I was give...

Detailed explanation of the basic use of centos7 firewall in linux

1. Basic use of firewalld start up: systemctl sta...

A practical record of an accident caused by MySQL startup

Table of contents background How to determine whe...

Solution to HTML2 canvas SVG not being recognized

There is a new feature that requires capturing a ...

Several methods of deploying multiple front-end projects with nginx

I have summarized 3 methods to deploy multiple fr...

Detailed explanation of the correct use of the count function in MySQL

1. Description In MySQL, when we need to get the ...

Summary of solutions for MySQL not supporting group by

I downloaded and installed the latest version of ...

Tutorial on installing MySQL under Linux

Table of contents 1. Delete the old version 2. Ch...

Install Zookeeper under Docker (standalone and cluster)

After starting Docker, let's take a look at t...