关于JS中的全等和不全等、等于和不等于问题

目录
  • 全等和不全等
    • 全等
    • 不全等
  • 相等和不相等
    • 相等
    • 不相等

全等和不全等

全等和不全等比较的是符号两侧的操作数,以全等操作符为例,如果操作数满足全等则返回true,否则返回false。全等和不全等操作符在做比较相等时不会转换操作数,也就是在不转换的前提下直接进行全等或不全等的比较。

全等

符号:===

let str1="1"
let str2=1
console.log(str1===str2)		//false

不全等

符号:!==

let str1="1"
let str2=1
console.log(str1!==str2)		//true

相等和不相等

相等和不相等操作符也同样是比较两个操作数,以相等操作符为例,如果两个操作数满足相等则返回true,否则返回false。不过与全等和不全等操作符的区别在于:相等和不相等操作符会先对操作数进行强制类型转换,转后的操作数再进行比较。

相等

符号:==

let str1="1"
let str2=1
console.log(str1==str2)		//true
console.log(str1===str2)	//false
let flag=true
let num=1
console.log(flag==num)		//true
console.log(flag===num)		//false

不相等

符号:!=

let str1="1"
let str2=1
let str3="hello"
console.log(str1!=str2)		//false   先是类型转换,之后进行比较
console.log(str1!==str2)	 //true	  对于全等操作福这两个操作数不进行强制类型转换,自然就不全等
console.log(str2!=str3)		//true
console.log(str2!==str3)	  //true

对于相等和不相等操作符对操作数进行强制类型转换的规则如下:

布尔值会直接转换成数值进行比较:false:0;true:1

字符串遇到数值则会转换为数值再进行比较

对于对象,如果两个操作数都是对象则比较二者是否为同一个对象,如果两个操作数指向同一个对象则返回true,否则返回false。如果其中的一个操作数为对象则会调用valueOf方法取到原始值,之后再进行比较(按照上述规则)

const p = new Object('zhangsan')	//相当于const p=new String('zhangsan')
console.log(p.valueOf() == 'zhangsan')	//true
console.log(p == 'zhangsan')	//true
const p1={name:'zhangsan'}
let   p2=p1
console.log(p1==p2)		//true
p2={}
console.log(p1==p2)		//false

对于null和undefined,null和undefined是相等的,但是无论和谁比较,他们都不会被强转。

console.log(null==undefined)		//true
console.log(null===undefined)		//false		对于全等返回结果依然是false

对于NaN,NaN不等于任何值包括他自己。涉及到操作符是NaN的比较,只要是相等操作符则返回false,不相等则返回true

console.log(NaN==NaN)	//false
console.log(NaN!='')	//true
console.log(NaN!=1)	//true
console.log(NaN!={})	//true

到此这篇关于JS中的全等和不全等、等于和不等于的文章就介绍到这了,更多相关js 全等和不全等、等于和不等于内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • js 事件处理函数间的Event物件是否全等

    这个小问题以前就遇到,却没有去总结 现在又遇到,为了得到准确结论,记录下来: 如题:同一事件 多个执行函数间的Event物件是否全等 例如: 复制代码 代码如下: dom.addEvent('click',fna); dom.addEvent('click',fnb); 1:在fna里对Event物件添加的属性,在其后执行的fnb函数里是对于Event物件是否能访问到? 2:执行fna/fnb函数时的Event物件是否全等 Eventfna===Eventfnb ? 标准的文档太长哪里是说明了这

  • 简略说明Javascript中的= =(等于)与= = =(全等于)区别

    Javascript中的= =(等于)与= = =(全等于)有什么区别呢? 我们先来看两个例子: var  n='100' : if(n==100) { alert('等于'); } else { alert('不等于'): } 结果是"等于" : 在判断字符串是否相同时, var n=false; if(n=='false') { alert('等于'); } else { alert('不等于'); } 结果是"不等于". 原因:===在判断两个值是否相同的时候

  • javascript中等于(==)与全等(===)的区别说明

    var y = 5; if(y == "5"){ document.write("== '5' True "); } else{ document.write("== '5' False "); } if(y == 5){ document.write("== 5 数字 is True "); } else{ document.write("== 5 数字 False "); } if( y === 5){

  • javascript中不等于的代码是什么怎么写

    !=!==前面不考虑类型,后者要求比较对象是相同类型且值一样

  • javascript 全等号运算符使用说明

    而以前一直都是用等号"=="一直都没在JS里用过全等于符号"===".而這两种运算符只是检测两个对象的相等性时,一个执行类型转换和一个类型不转换,全等于符号只有在不转换类型前才返回true 复制代码 代码如下: var sNum="66"; var iNum=66; alert(sNum==iNum);//输出为 true alert(sNum===iNum);//输出为 false 第一个等于运算符在比较的时候就把sNum的值"66&

  • 解决JavaScript中0.1+0.2不等于0.3问题

    console.log(0.1+0.2===0.3)// true or false?? 在正常的数学逻辑思维中,0.1+0.2=0.3这个逻辑是正确的,但是在JavaScript中0.1+0.2!==0.3,这是为什么呢?这个问题也会偶尔被用来当做面试题来考查面试者对JavaScript的数值的理解程度. 在JavaScript中的二进制的浮点数0.1和0.2并不是十分精确,在他们相加的结果并非正好等于0.3,而是一个比较接近的数字 0.30000000000000004 ,所以条件判断结果为

  • 关于JS中的全等和不全等、等于和不等于问题

    目录 全等和不全等 全等 不全等 相等和不相等 相等 不相等 全等和不全等 全等和不全等比较的是符号两侧的操作数,以全等操作符为例,如果操作数满足全等则返回true,否则返回false.全等和不全等操作符在做比较相等时不会转换操作数,也就是在不转换的前提下直接进行全等或不全等的比较. 全等 符号:=== let str1="1" let str2=1 console.log(str1===str2) //false 不全等 符号:!== let str1="1" l

  • JS中如何实现复选框全选功能

    js实现复选框全选功能,代码如下所示: <? include_once("inc/auth.inc.php"); include_once("inc/utility_all.php"); include_once("inc/utility_org.php"); $connstatus = ($connstatus) ? true : false; if(!isset($TYPE)) $TYPE="0"; $ITEMS_I

  • vue.js中npm安装教程图解

    首先理清nodejs和npm的关系: node.js是javascript的一种运行环境,是对Google V8引擎进行的封装.是一个服务器端的javascript的解释器. 包含关系,nodejs中含有npm,比如说你安装好nodejs,你打开cmd输入npm -v会发现出啊线npm的版本号,说明npm已经安装好. 引用大神的总结: 其实npm是nodejs的包管理器(package manager).我们在Node.js上开发时,会用到很多别人已经写好的javascript代码,如果每当我们

  • js中prototype用法详细介绍

    prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!这一点可能听起来会有点乱,别急,下面我便通过实例对这一特殊的方法作已下讲解: 首先,我们要先了解一下类的概念,JavaScript 本身是一种面向对象的语言,它所涉及的元素根据其属性的不同都依附于某一个特定的类.我们所常见的类包括:数组变量(Array).逻辑变量(Boolean).日期变量(Date).结构变量(Function).数值变量(Number)

  • JS中artdialog弹出框控件之提交表单思路详解

    artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口. 前言: 自适应内容 artDialog的特殊UI框架能够适应内容变化,甚至连外部程序动态插入的内容它仍然能自适应,因此你不必去考虑消息内容尺寸使用它.它的消息容器甚至能够根据宽度让文本居中或居左对齐--这一切全是XHTML+CSS原生实现. 完善的接口 它的接口完善,可以轻易与外部程序配合使用.如异步写入消息.控制位置.尺寸.显示与隐藏.关闭等. 细致的体验 如果不是在输入状态,它支持Esc快捷键关

  • Vue.js中数据绑定的语法教程

    数据绑定语法 Vue.js 的模板是基于 DOM 实现的.这意味着所有的 Vue.js 模板都是可解析的有效的 HTML,且通过一些特殊的特性做了增强.Vue 模板因而从根本上不同于基于字符串的模板,请记住这点. 插值 文本 数据绑定最基础的形式是文本插值,使用 "Mustache" 语法(双大括号): <span>Message: {{ msg }}</span> Mustache 标签会被相应数据对象的 msg 属性的值替换.每当这个属性变化时它也会更新.

  • js中递归函数的使用介绍

    下面我们就做一个10以内的阶乘试试看吧: js中递归函数的使用 function f(num){ if(num alert("10!的结果为:"+f(10)); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 递归函数的调用就说这么多了 js递归函数调用自身时的保险方式. 来自js高级程序设计 一个典型阶乘递归函数: 复制代码 代码如下: function fact(num){ if (num<=1){ return 1; }else{ return num*fact

  • 浅谈js中的this问题

    this this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上 this的最终指向的是那个调用它的对象(这里其实并不完全对,this的指向有时候会很微妙,得靠自己去慢慢体会) 只有方法在对象上,对象调用当前方法,指向当前对象 function fnThis(){ let user='js'; console.log(this.user)//undefined console.log(this)//global(window) } fnThis(); 这

  • 教你JS中的运算符乘方、开方及变量格式转换

    1)如何计算乘方 题一:3的4次方(不会打,请原谅 ==!!!) 3的4次方=3*3*3*3 var a = Math.pow(3,4); console.log(a); 说明:Math.pow()是用来计算乘方的语法 注意:Math的M是大写: 题二:3的4*5次方 var a =Math.pow(3,4*5); console.log(a); 2)如何计算根号 题目:根号81 var a = Math.sqrt(81); console.log(a); 变量格式转换 用户的输入 var ye

  • vue2.0在table中实现全选和反选的示例代码

    其实在去年小颖已经写过一篇:Vue.js实现checkbox的全选和反选 小颖今天在跟着慕课网学习vue的过程中,顺便试试如何在table中实现全选和反选,页面的css样式是直接参考慕课网的样式写的,js是小颖自己写哒,欢迎大家吐槽和点赞,嘻嘻 demo的  git 地址:ShoppingCart 页面效果: 具体怎么实现的呢? 使用localstorage来存储页面信息中已经有写项目是怎么创建的所以小颖在这里就不重复了,其实只是在上篇文章的基础上稍微做了改动: App.vue文件 <temp

随机推荐