首页 > 其他分享 >JS语法让人困惑的点 “==与===”

JS语法让人困惑的点 “==与===”

时间:2023-02-23 10:22:47浏览次数:57  
标签:困惑 false log JS 语法 console true 表达式

在JS中有很多神奇的语法,非常让人困惑,我们就先一一道来,相信你在开发中或多或少都踩过这些坑,或者让人无法理解。 今天我们就来说下【】和【=】

这题对于很多没有系统学过前端开发的技术人员来说,算个重点,来画起来,我们一起看。

(图片来源于网络)

请看题,以下执行结果是啥?

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

是不是很神奇
那么为什么会出现这种情况,我们从=的特性说起
我们先来分析一下上面的等式:
1.左边是一个数组,右边是一个表达式,左边数组就是:[]  , 右边是一个数组的取反 ![] ,所以算是一个表达式,后面取反后得到 false,

所以这里可以将等式替换为,相当于 []==false 的比较,

console.log([]==false);

这里,还是有点不符合逻辑,我们再继续拆分。
分析:因为这里用的是双等号,左边是数组,右边是值,所以根据双等号的特性,需要将两边都转换为原始类型,用ToString来转换,所以这里执行后显示为:

我们继续替换等式

console.log(''==false);

执行后结果为:true,是不是有点抓狂的感觉。
现在两边都为原始类型,但是类型还是不一样,左边是字符串,右边是bool 类型 ,所以这个 == 又要去干件大事了,继续转,将两边都转换为数值类型 。
那么继续转:

然后最终执行的表达式就是:

console.log(0==0);

执行结果为:true;

所以表达式中如果需要比较,尽量使用=,因为在执行中非常诡异,给大家再举个例子:

console.log(true==[1]);

是不是神奇的知识又增加了!

在后续我们会为大家带来更多有趣内容介绍~

拓展阅读

详解商业智能前世今生,嵌入式BI如何百花齐放?

使用WIX进行商业智能OEM打包

数据可视化分析工具如何在国内弯道超车?

标签:困惑,false,log,JS,语法,console,true,表达式
From: https://www.cnblogs.com/powertoolsteam/p/17145390.html

相关文章

  • 858~860AJAX 概念、实现原生js
    AJAX:1.概念:AsynchronousJavascriptAndXML异步的JavaScript和xml1.异步和同步:客户端和服务器端相互通信的基础上客户端必须等待服务器......
  • js 给树形(层级)数组添加层级标识
    树形数据,需要给每层的数据添加层级,如下:consttreeData=[{id:1,name:'a',children:[{id:101,name:'a1',children:null}]},{......
  • json.dumps()使用indent参数 格式化输出json数据格式
    json.dumps() 方法 将一个Python数据结构转换为JSON字符串data=[{"name":"小王","sex":'男'},{"name":"小明","sex":'女'}]json_str=json.dum......
  • 使用 Three.js 的 3D 制作动画场景
    推荐:将 NSDT场景编辑器 加入你的3D开发工具链。由于GSL语法的复杂性,对于许多开发人员来说WebGL是一个未知的领域。但是有了Three.js,在浏览器中3D的实现变得简单......
  • JS滚动到页面底部
    code//例如:页面高度1000,屏幕高度900,相差100,//scrollTop:向上滚动100像素,就到达页面底部了。functionScrollToBottom(){$("html,body").animate({scrollTop:$......
  • nodejs 查用语法
    合并objectsvaro1={a:1};varo2={b:2};varo3={c:3};varobj=Object.assign(o1,o2,o3);console.log(obj);//{a:1,b:2,c:3}console.lo......
  • JS批量下载图片
    已用该文章的知识实现了批量下载,所需的两个JS文件可以在GitHub下载<scriptsrc="/js/jszip.js"></script><scriptsrc="/js/FileSaver.min.js"></script><script>......
  • MarkDown语法
    MarkDown语法标题一级标题:#+空格+标题名(二级标题用##,三级标题###)字体粗体:两个星号+内容+两个星号斜体:一个星号+内容+一个星号删除线:两边两个波浪号hello引用大于......
  • js 内存泄露是什么?常见的有哪些?
    内存泄露定义:一块被分配的内存既不能使用也无法回收,直到浏览器进程结束;常见的有以下这些:1,意外的全局变量;2,console.log;3,DOM泄露;4,闭包;5,被遗忘的定......
  • spring boot内置tomcat运行JSP报错
    =============================================== 2023/2/23_第1次修改                       粽先生 ==================================......