龙空技术网

【每天一个前端小知识】—JS篇之隐式类型转换

灵巧豆花Zz 45

前言:

现时你们对“jsfalse”大体比较珍视,我们都需要分析一些“jsfalse”的相关文章。那么小编也在网络上搜集了一些关于“jsfalse””的相关文章,希望我们能喜欢,你们一起来学习一下吧!

生活充满了变数,就像工资和清退你永远不知道谁先来。就像你在追你的女神,昨天爱搭不理,今天投怀送抱,把你在崩溃的边缘疯狂拉扯。但是呢,世间万物总有规律可循,只不过变量太多判断太多,你无法精确的预估。就像上年春节档的电影《流浪地球2》,拥有那台量子计算机你完全可以掌握自己的命运。

一切的恐惧都来源于算力不足~。

在JS的世界往往也会出现你预料之外的事,那是你基础不够,学艺不精。下面进入正题看一个神奇的案例:

console.log([]==[]);console.log([]!==[]);

你是不是认为打印结果应该是TRUE和FALSE,但实际上与你的想法完全相反,打印出的是FALSE和TRUE。所以,按你浅显经验去判断,结果往往是不对的。

一、[]==[]为false

在JS中,数组是属于引用型数据类型,所以"=="左右两边所表示的实际只是数组的所在的地址而已。在创建一个新数组时,其地址均不相同,因此"[]==[]"最终返回FALSE。

二、[]==![]为true

这个就有点难理解了,按照正常思维来看,符号“!”代表的是取反,所以“==”两边的值应该不等才是。这个就涉及到了JS中的数据类型转换的问题,当我们使用“==”来对数据进行比较时,若两个数据类型不一致,JS会先按照一定规则将数据转换为同一数据类型后再进行比较,在面对"==",">","<",">=","<=","!="这类算数运算符时。JS会将该数据转化为数字类型,因此等号左边空数组”[]“会被转化为0;而等号右边空数组[]是对象类型,对象类型取反是FALSE,再结合上边说的面对算数运算符时会转化为数字类型,FALSE又会被转化为0;因此[]==![]的结果就是TRUE了。

给大家安利一个图片,基本包含了所有类型的隐式转换结果。

所以啊,很多说错的话,做错的事,我们往往会后悔很久很久,那是你对世界运行的机制不够了解。趁着年轻,趁着还有很多试错的成本,多做一些不敢尝试的事情,多去接触形形色色的人,让我们有更多的判断条件,去RETURN我们想要的结果。

<script src="我的主页"></script>

// 为您的生活和工作注入灵魂

标签: #jsfalse #js强制类型转换和隐式类型转换