【前端面试】(三)JavaScript相等(==)和全等(===)运算符的区别
视频链接:
JavaScript相等()和全等(=)运算符的区别 - Web前端工程师面试题讲解
参考链接:
JavaScript == 与 === 区别
区别
对于string、number 等基础类型
- 不同类型的比较
- 相等(==)先转换成对应的类型后的值,再进行比较判断;
- 全等(===)则不会进行转换,而是直接返回不相等的结果
- 同类型比较
- 两个进行该类型的“值”的比较
对于 Array,Object 等高级类型
==和===没有区别,都会通过指针地址进行比较
//不同类型
console.log(6 == "6");
console.log(6 === "6");
//同一类型
console.log(6 == 6);
console.log(6 === 6);

布尔型 与 数值
//相等就把true变为1,false变为0
console.log(true == 1);
console.log(false == 0);
//全等不会把布尔型数值转换
console.log(true === 1);
console.log(false === 0);

未知类型 与 数值/未知类型
//一个字符串里只有空格或什么都没有就转换成 空
//而 0 默认转换成 空
console.log('' == 0);
console.log(' ' == 0);

//null表示空值,undefinded表示未声明/定义的变量
//它们都是假值,所以相等
console.log(null == undefined);
// null、undefined都是特殊值,不能转换成除自己以外的任何值
console.log(null == 0);
console.log(undefined == '');

字符串 与 布尔类型
//'false'字符串不会转换
//而 false则会因 相等 转变成 0
console.log('false' == false);
//但是字符串可以变为数值,前提当然是该字符串为 '0'
console.log('false' == 0);

? + 别的值
//NaN是连自己都不能识别的值,那么无论其他的这么样也都同一个结果
console.log(NaN == NaN);
console.log(NaN == false);
console.log(NaN === false);

对象之间
var a = {};//a创建了地址1
var b = {};//b创建了地址2
var c = a; //a辅值给c,那么c与a都会最终指向同一对象,也即c指向a
//a与b的地址不一致,所以都为false
console.log(a==b);
console.log(a===b);
//之前c指向a,c的地址就是a的地址,所以都为true
console.log(a==c);
console.log(a===c);

蛋老师的视频图解

【前端面试】(三)JavaScript相等(==)和全等(===)运算符的区别的更多相关文章
- 前端面试之JavaScript中数组的方法!【残缺版!!】
前端面试之JavaScript中数组常用的方法 7 join Array.join()方法将数组中所有元素都转化为字符串并连接在-起,返回最后生成的字 符串.可以指定一个可选的字符串在生成的字符串中来 ...
- 前端面试之JavaScript的基本数据类型!
前端面试之JavaScript的基本数据类型! JS的基本数据类型 数字 字符串 布尔值 JavaScript中有两个特殊的原始值: null (空) 和undefined (未定义), , 它们不是 ...
- 前端面试之JavaScript中的闭包!
前端面试之JavaScript中的闭包! 闭包 闭包( closure )指有权访问另一个函数作用域中变量的函数. ----- JavaScript 高级程序设计 闭包其实可以理解为是一个函数 简单理 ...
- 前端面试:问到GET和POST两种区别
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. "标准答案"(本标准答案参考自w3schools): GET在浏览器回退时是无害的,而P ...
- 前端面试回顾---javascript的面向对象
转:https://segmentfault.com/a/1190000011061136 前言 前一阵面试,过程中发现问到一些很基础的问题时候,自己并不能很流畅的回答出来.或者遇到一些基础知识的应用 ...
- 前端面试之Javascript
1,JS基本的数据类型和引用类型: (1)基本数据类型:number,string,null,undefined,symbol--栈: (2)引用数据类型:object,array,function- ...
- 前端面试整理——javascript算法和测试题
(1)算法: 1.斐波那契数列:1.1.2.3.5.8.13.21.输入n,输出数列中第n位数的值. 方案一: function fn(n){ var num1 = 1, num2= 1, num3 ...
- 前端面试之JavaScript中this的指向【待完善!】
JavaScript中this的指向问题! 另一个特殊的对象是 this,它在标准函数和箭头函数中有不同的行为. 在标准函数中, this 引用的是把函数当成方法调用的上下文对象,这时候通常称其为 t ...
- web前端面试第一次[javascript函数和方法的区别]
//函数 function f1(){ console.log("我是函数"); } //调用函数 f1(); //创建一个空对象 var obj = {} //把函数定义到对象里 ...
随机推荐
- Edu Cf Round 105 (Div. 2) B. Berland Crossword 1.读懂题, 2. 思维
一. 原题链接 https://codeforces.com/contest/1494/problem/B 二. 题意 + 题解: 没看懂题目, 懵了好久, 先狡辩一下当时误解的句子, 英语是硬伤 ...
- 解决windows下WslRegisterDistribution failed with error: 0x80070050的问题
最近升级了老电脑的windows10的系统,发现wsl2里面安装的ubuntu20.04不能在windows terminal正常启动了(我之前是把ubuntu20.04作为默认启动终端的.) 涉及报 ...
- Unity减小安装包的体积(210MB减小到7MB)
概述 项目简介 由于是公司内做的项目,不方便开源,就只分享优化过程吧. 项目信息 逐日是一个移动端单机小游戏,使用Unity开发,目前已将项目使用的Unity升级到2019.4.14f1c1 (3e5 ...
- CentOS下Apache Doris Oracle ODBC外表使用指南
1.软件环境 操作系统:CentOS 7.8 Apache Doris :0.15 Postgresql数据库:oracle 19c UnixODBC:2.3.1 Oracle ODBC :insta ...
- Vue过渡和动画效果展示(案例、GIF动图演示、附源码)
前言 本篇随笔主要写了Vue过渡和动画基础.多个元素过渡和多个组件过渡,以及列表过渡的动画效果展示.详细案例分析.GIF动图演示.附源码地址获取. 作为自己对Vue过渡和动画效果知识的总结与笔记. 因 ...
- netty系列之:netty中的frame解码器
目录 简介 LineBasedFrameDecoder DelimiterBasedFrameDecoder FixedLengthFrameDecoder LengthFieldBasedFrame ...
- php 迭代器的学习
在PHP中有一些预定义的类,比如迭代器类,有SPL提供.常用的几个类: Iterator------最基本的迭代器 IteratorAggregate --------可以提供一个迭代器的对象,但它本 ...
- Linux服务器如何识别移动硬盘?
序言 通常我们使用的移动硬盘或U盘一般都是ntfs或fat32的文件系统,常跟服务器打交道的小伙伴,会经常遇到把移动硬盘或U盘上的数据拷贝到Linux服务器上.绝大多数Linux发行版内核支持fat3 ...
- 等了整整12年!Linux QQ昨天终于更新了!
一个执着于技术的公众号 前言 2020年4月1日,腾讯QQ Linux版迎来最新版发布,详细版本号为v2.0.0 Beta2.上一个版本v2.3.2发布于2019年10月24日,时隔160天又迎来了更 ...
- 手脱MoleBox(2.3.3-2.6.4)
1.查壳 2.找到OEP 对第二个Call使用ESP定律,再跳转后的位置进入第一个Call,这里就是OEP了,在这里直接dump的话会失败,那是因为MoleBox壳对IAT进行二次跳转,我们先在OEP ...