问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

javascript语言中的比较运算符不包括

发布网友 发布时间:2022-04-21 04:33

我来回答

2个回答

懂视网 时间:2022-04-22 14:59

本篇文章给大家带来的内容是关于JavaScript中比较运算符隐式类型转换的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

相信大家在代码中经常看见 '==' 和 '===',但大家真的弄懂了比较运算符和其中的隐式转换嘛? 今天就重新认识下比较运算符。

全等运算符 ===

说明: 严格匹配,不会类型转换,必须要数据类型和值完全一致

先判断类型,如果类型不是同一类型的话直接为false;

1 对于基本数据类型(值类型): Number,String,Boolean,Null和Undefined:两边的值要一致,才相等
 console.log(null === null) // true
 console.log(undefined === undefined) // true
 注意: NaN: 不会等于任何数,包括它自己
 console.log(NaN === NaN) // false 

2 对于复杂数据类型(引用类型): Object,Array,Function等:两边的引用地址如果一致的话,是相等的
 arr1 = [1,2,3];
 arr2 = arr1;
 console.log(arr1 === arr2) // true

相等运算符 ==

非严格匹配: 会类型转换,但是有前提条件一共有五种情况
(接下来的代码以 x == y 为示例)

x和y都是null或undefined:
规则: 没有隐式类型转换,无条件返回true

console.log ( null == undefined );//true
console.log ( null == null );//true
console.log ( undefined == undefined );//true

x或y是NaN : NaN与任何数字都不等
规则:没有隐式类型转换,无条件返回false

console.log ( NaN == NaN );//false

x和y都是string,boolean,number
规则:有隐式类型转换,会将不是number类型的数据转成number

console.log ( 1 == true );//true (1) 1 == Number(true)
console.log ( 1 == "true" );//false (1) 1 == Number('true')
console.log ( 1 == ! "true" );//false (1) 1 == !Boolean('true') (2) 1 == !true (3) 1 == false (4)1 == Number(false)
console.log ( 0 == ! "true" );//true
console.log(true == 'true') // false

x或y是复杂数据类型 : 会先获取复杂数据类型的原始值之后再左比较
复杂数据类型的原始值: 先调用valueOf方法,然后调用toString方法
valueOf:一般默认返回自身
数组的toString:默认会调用join方法拼接每个元素并且返回拼接后的字符串

console.log ( [].toString () );//空字符串
console.log ( {}.toString () );//[object Object]
注意: 空数组的toString()方法会得到空字符串,
 而空对象的toString()方法会得到字符串[object Object] (注意第一个小写o,第二个大写O哟)

console.log ( [ 1, 2, 3 ].valueOf().toString());//‘1,2,3’
console.log ( [ 1, 2, 3 ] == "1,2,3" );//true (1)[1,2,3].toString() == '1,2,3' (2)'1,2,3' == '1,2,3'
console.log({} == '[object Object]');//true

x和y都是复杂数据类型 :
规则只比较地址,如果地址一致则返回true,否则返回false

var arr1 = [10,20,30];
var arr2 = [10,20,30];
var arr3 = arr1;//将arr1的地址拷贝给arr3
 
console.log ( arr1 == arr2 );//虽然arr1与arr2中的数据是一样,但是它们两个不同的地址
console.log ( arr3 == arr1 );//true 两者地址是一样
 
console.log ( [] == [] );//false
console.log ( {} == {} );//false

经典面试题

注意:八种情况转boolean得到false: 0 -0 NaN undefined null '' false document.all()

console.log([] == 0); //true 
 // 分析:(1) [].valueOf().toString() == 0 (2) Number('') == 0 (3) false == 0 (4) 0 == 0
console.log(![] == 0); //true
 // 分析: 逻辑非优先级高于关系运算符 ![] = false (空数组转布尔值得到true)
 
console.log([] == []); //false
// [] 与右边逻辑非表达式结果比较
//(1) [] == !Boolean([]) (2) [] == !true (3)[] == false (4) [].toString() == false (5)'' == false (6)Number('0') == Number(false)
console.log([] == ![]); //true

onsole.log({} == {}); //false
// {} 与右边逻辑非表达式结果比较
//(1){} == !{} (2){} == !true (3){} == false (4){}.toString() == false (5)'[object Object]' == false (6)Number('[object Object]') == false
console.log({} == !{}); //false

变态面试题

 var a = ???
 if(a == 1 && a == 2 && a == 3 ){
 console.log(1)
 }

//如何完善a,使其正确打印1


//答案
var a = {
 i : 0, //声明一个属性i
 valueOf:function ( ) {
 return ++a.i; //每调用一次,让对象a的i属性自增一次并且返回
 }
 }
 if (a == 1 && a == 2 && a == 3){ //每一次运算时都会调用一次a的valueOf()方法
 console.log ( "1" );
 }

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!

热心网友 时间:2022-04-22 12:07

JavaScript 语言中有两种比较方式,转换类型比较运算符 == 和严格比较运算符 ===.其中严格比较运算符仅当两个操作数的类型相同且值相等时才为true。

JavaScript中的运算符有很多,主要分为算术运算符,等同全同运算符,比较运算符,字符串运算符,逻辑运算符,赋值运算符等。这些运算符都有一些属于自己的运算规则,下面就为大家介绍一下JavaScript中的运算符。

JavaScript脚本语言具有以下特点:

(1)脚本语言。JavaScript是一种解释型的脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。

(2)基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。

(3)简单。JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。

(4)动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 0与任何数相加都得原数吗? 用JavaScript做一个简易的计算器 在javascript中,it是运算符么 计算机乘法和加法一起为啥他也是先算乘法? 请问JavaScript中如何处理数字和字符串相乘的情况? JAVASCRIPT中字符串减数字等于什么? JS中的“&&”与“&”和“||”“|”有什么区别? javascript做四则运算 javascript 中的? :语句 表示什么意思 javascript算术运算符“+”、“-” 【Web前端基础】js运算符有哪些? JavaScript 算术运算符中"%"指的是什么 javascript运算符 javascript中运算符有哪些 【Web前端基础】js运算符有哪些? JavaScript里面运算符有哪些? 大家说下深圳公积金怎么查,怎么做 深圳住房公积金怎样查询余额 如何查询深圳住房公积金明细? 深圳住房公积金查询余额怎么查 深圳公积金明细查询有几种方法 JavaScript运算符详解 关于用javascript实现科学计算器功能的思路 怎么用JS 写一个四则运算 js 算术运算结果 那知道河北联通的短信中心号码吗? 河北短信中心号码是多少? 河北联通用短信怎么开通怎么开通校讯通 河北保障局发短信点击了没事吧 河北省中国联通短信中心号码是多少 用“我有”如何造句? 河北农信短信提醒每月多少钱 河北联通发什么短信查流量 鏈夐┈娑﹀湪灏辫屼簡锛屾垜浠鍦ㄤ笉鍦ㄦ剰涔変笉澶是什么字 河北邯郸短信中心号码是多少 河北农信每隔15分钟就发一条短信是什么意思 京平高速上收到河北移动短信怎么回事? 河北唐山归属地短信中心号码 河北联通短信查询业务,发什么短信 河北省联通号码短信中心的号码是? 收到的拼音