【前端面试】(三)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 = {} //把函数定义到对象里 ...
随机推荐
- Metalama简介2.利用Aspect在编译时进行消除重复代码
上文介绍到Aspect是Metalama的核心概念,它本质上是一个编译时的AOP切片.下面我们就来系统说明一下Metalama中的Aspect. Metalama简介1. 不止是一个.NET跨平台的编 ...
- codeforces标签设置【codeforces内操作, 非浏览器操作】
直接干货~ 明确需求,关闭标签 步骤: 1.选中上方PROBLEM SET 2.找到Settings 第一个选项是展示未accepted的标签, 第二个选项是隐藏已accepted的标签 官方标签设 ...
- Java的源码执行(建议结合Javase语法学习来加深印象)
一.源码执行时的先后顺序: 父类的静态属性和静态块(按照声明顺序) 本类的静态属性和静态块(按照声明顺序) main方法 父类的成员属性和成员块(按照声明顺序) 父类构造器 本类成员属性和块(按照声明 ...
- CentOS 下 MySQL 服务搭建
1. 卸载旧 MySQL 查看 rpm 包 rpm-qa | grep mysql 如果存在,使用如下命令卸载 rpm -e 查找是否存在mysql 相关目录 find / -name mysql 卸 ...
- Dependabot 开始支持 pub package 版本检测
今年年初,我们发布了 Flutter 2022 产品路线图,其中「基础设施建设」这部分提到:2022 年 Flutter 团队将增加对供应链的安全的投入,目的是达到符合基础设施 SLSA 4 级别中描 ...
- Day 007:PAT训练--1108 Finding Average (20 分)
话不多说: 该题要求将给定的所有数分为两类,其中这两类的个数差距最小,且这两类分别的和差距最大. 可以发现,针对第一个要求,个数差距最小,当给定个数为偶数时,二分即差距为0,最小:若给定个数为奇数时, ...
- 【论文阅读】ConvNeXt:A ConvNet for the 2020s 新时代卷积网络
一.ConvNext Highlight 核心宗旨:基于ResNet-50的结构,参考Swin-Transformer的思想进行现代化改造,知道卷机模型超过trans-based方法的SOTA效果. ...
- Maven基础学习笔记
Maven基础学习笔记 下载链接 官网:https://maven.apache.org/ 所有版本:https://archive.apache.org/dist/maven/maven-3/ 阿里 ...
- Windows平台安装SQLite3数据库
Windows平台安装SQLite3数据库 话不多说,开始! 访问SQLite官网下载资源 在搜索引擎中键入SQLite3关键字寻找官网入口或直接点击此处前往SQLite官网,官网界面如下: 点击页面 ...
- 1.5 Linux中大量使用脚本语言,而不是C语言!
说到在 Linux 下的编程,很多人会想到用C语言,Linux 的内核.shell.基础命令程序,也的确是用C语言编写的,这首先证明了一点,C语言很强很通用. 到目前为止,C语言依然垄断着计算机工业中 ...