JS中相等(==)和等全(===)的区别与练习

简介: JS中相等(==)和等全(===)的区别与练习

JS中相等()和等全(=)的区别与练习

简介

  • 简介
    相等()与全等(=)的主要区别是,会进行类型转换,然后=不会进行类型转换,需要内容和类型都相等,才会返回true。

案例

* 案例一

6 == 6; true

6 === 6; true

6 == “6”; true // 这里会进行强制类型转换 使得这个“6”转换成数字6

6 === “6”; false // 左右两边的类型不同 所以不相等

* 案例二

在js里面,true是bool类型,true可以转换成整形的1,false转换成整形的0。

true == 1; true // 这里true通过类型转换可以转换成整型的1

false == 0; true

true === 1; false // 这里为false是因为两边类型不同

false === 0; false

* 案例三

对于一个字符串如果里面什么都没用,或者内容都是空格,那么强制转换之后就是整型的0了。

null与undefined都是假值所以相等,区别是null代表这个位置不应该有值或者为空值,undefined指的是未声明的变量或者没用赋值的变量。

‘’ == 0; true

’ ’ == 0; true

null == undefined; true

null == 0; false // null是空值 空值不是0

undefined == ‘’; false // undefined是未定义, ‘’是已经定义了的一个空字符串

* 案例四

‘false’ == false; false // false强转之后为0 不等于左边的字符串

// 对于NaN代表的是一个范围的意思,一个不是Number的类型中的任意一个,所以

// 它自身不会与自身相等,所以更不会与别的类型相等

NaN == NaN; false

NaN == NaN; false

NaN === false; false

* 案例五

var a = {};

var b = {};

var c = a;

a == b; false

a === b; false

a == c; true

a === c; true

首先是a和b都是保存在栈里面的内存地址,他们在栈里面定义的地方是不相同的,所以为false,他们的内容存储在堆里面,所以 a==c为true,他们的内容是相等的,c和a指向的是同一块堆上面的内存对象。

相关文章
|
6天前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
17 3
|
25天前
|
JavaScript 前端开发 索引
问js的forEach和map的区别
JavaScript中的`forEach`和`map`都是数组迭代方法。`forEach`遍历数组但不修改原数组,无返回值;它接受回调函数处理元素。`map`则遍历数组并返回新数组,新数组元素为回调函数处理后的结果。两者都接收元素、索引和数组作为回调函数参数。
21 7
|
28天前
|
JavaScript 前端开发
JS require 与 import 的区别
JS require 与 import 的区别
19 1
|
1月前
|
JavaScript
js开发:请解释什么是ES6的类(class),并说明它与传统构造函数的区别。
ES6的类提供了一种更简洁的面向对象编程方式,对比传统的构造函数,具有更好的可读性和可维护性。类使用`class`定义,`constructor`定义构造方法,`extends`实现继承,并可直接定义静态方法。示例展示了如何创建`Person`类、`Student`子类以及它们的方法调用。
22 2
|
1月前
|
自然语言处理 JavaScript 网络架构
js开发:请解释什么是ES6的箭头函数,以及它与传统函数的区别。
ES6的箭头函数以`=>`定义,简化了函数写法,具有简洁语法和词法作用域的`this`。它无`arguments`对象,不能用作构造函数,不支持`Generator`,且不改变`this`、`super`、`new.target`绑定。适用于简短表达式,常用于异步编程和高阶函数。
18 5
|
1月前
|
JavaScript 前端开发
js开发:请解释原型继承和类继承的区别。
JavaScript中的原型继承和类继承用于共享对象属性和方法。原型继承利用原型链查找属性,节省内存但不支持私有成员。类继承通过ES6的class和extends实现,支持私有成员但占用更多内存。两者各有优势,适用于不同场景。
19 0
|
3天前
|
JavaScript 前端开发
js的let、const、var的区别以及应用案例
【4月更文挑战第27天】ES6 中,`let` 和 `const` 是新增的变量声明关键字,与 `var` 存在显著差异。`let` 允许重新赋值,而 `const` 不可,且两者都具有块级作用域。`var` 拥有函数级作用域,并可在函数内任意位置访问。`let` 和 `const` 声明时必须初始化,而 `var` 不需。根据需求选择使用:局部作用域用 `let`/`const`,全局或函数范围用 `var`,不可变值用 `const`。
11 2
|
5天前
|
JavaScript 前端开发 Oracle
java和JavaScript的区别
java和JavaScript的区别
7 3
|
7天前
|
JavaScript 前端开发
js开发:请解释同步和异步编程的区别。
同步编程按顺序执行,易阻塞;异步编程不阻塞,提高效率。同步适合简单操作,异步适合并发场景。示例展示了JavaScript中同步和异步函数的使用。
16 0
|
11天前
|
算法
Swiper库和Glide.js库的性能有何区别
Swiper和Glide.js是两个流行的响应式轮播图库。Swiper功能强大且灵活,支持多方向滑动,拥有丰富的配置和切换效果,适合复杂需求,其高性能得益于优化的算法和惰性加载。Glide.js则轻量级、快速,专注于基础功能,适合简洁需求。两者各有侧重,选择应基于项目具体需求和性能考虑。