JavaScript中的==与===的区别

简介: JavaScript中的==与===的区别

先看一个例子


alert(0 == "");

1

运行结果是啥?


回答是0==的同学真心可以洗洗睡了…


回答是false的同学还是很有必要继续读下去的…


答案是true,注意不是'true'也不是"true"。


OK,为啥呢,很简单,JS中==会先转换类型,然后再判断值是否相等。


刚刚那个"“是字符串类型,而0是数字类型,所以先把”“转换为数字类型,正好”"对应的数字类型为0,所以左右相等了,所以结果为true。


以下的情况也都是true,因为在判断之前先转换了类型。


0 == ""

0 == false

"" == false

1 == "1"

"1"==true

1

2

3

4

5

OK,那么有时候啊,这种逻辑其实不大对。空字符串跟假有什么关系呢?这种运算符也太不严谨了,哈哈,没关系哦,JavaScript中还有一个强大的运算符**=,强大之处在于,===先判断类型是否一样,如果两边类型不同,直接就返回false,如果类型相同的情况,在去判断值,所以在大多数情况下,===才是我们想要的那个等于**。


例如:


1 == "1" // 判断结果为真

1 === "1"// 判断结果为假,因为一上来,类型就不同

1

2

所以需要对JavaScript类型加以了解,就能准确的判断到底是真,还是假。

相关文章
|
4月前
|
JavaScript 前端开发 索引
js遍历的方法与区别
js遍历的方法与区别
70 3
|
4月前
|
JavaScript 前端开发 索引
js的循环中foreach、for in和for of的区别
js的循环中foreach、for in和for of的区别
181 0
|
1月前
|
JavaScript 前端开发
js中的bind,call,apply方法的区别以及用法
JavaScript中,`bind`、`call`和`apply`均可改变函数的`this`指向并传递参数。其中,`bind`返回一个新函数,不立即执行;`call`和`apply`则立即执行,且`apply`的参数以数组形式传递。三者在改变`this`指向及传参上功能相似,但在执行时机和参数传递方式上有所区别。
29 1
|
1月前
|
设计模式 JavaScript 前端开发
js中new和object.creat区别
【10月更文挑战第29天】`new` 关键字和 `Object.create()` 方法在创建对象的方式、原型链继承、属性初始化以及适用场景等方面都存在差异。在实际开发中,需要根据具体的需求和设计模式来选择合适的方法来创建对象。
|
3月前
|
前端开发 JavaScript UED
JavaScript防抖和节流的使用及区别
JavaScript防抖和节流的使用及区别
112 57
|
2月前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
117 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
2月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
23 2
|
2月前
|
JavaScript 前端开发
【JavaScript】let,const和var的区别
总的来说,随着ECMAScript 6(ES6)及后续版本的推广,`let`和 `const`因其增强的块级作用域和对变量行为的更严格控制,逐渐成为现代JavaScript编码实践中推荐使用的变量声明方式。而 `var`由于其历史遗留的局限性,正逐渐被边缘化,但在维护老代码或处理特定兼容性需求时仍需了解。
46 3
|
3月前
|
前端开发 JavaScript 开发者
React 和 Vue.js 框架的区别是什么?
React 和 Vue.js 框架的区别是什么?
|
3月前
|
JavaScript 前端开发
JavaScript中单引号和双引号的效果的一点区别
JavaScript中单引号和双引号的效果的一点区别