分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

js ==和+

发布时间:2023-09-06 01:44责任编辑:顾先生关键词:js

==运算符

==比较符的如果两端数据类型不一致时会先进行隐式转换,然后再比较值是否相等,转换规则如下:

1.string与number比较时,先将string转成number,然后比较大小

2=="2" ?//true

2.布尔类型与其它类型比较时,先将布尔类型转成数值,然后再比较

false=="2" //false

第一步:0=="2";

第二步:0==2(字符串和其它类型比较时先将字符串转成数字类型)

3.string、number和object类型比较时,先把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。 

[] == 0//true

第一步:左侧是一个数组,调用valueOf后得到的类型还是数组,数组不是基础类型,然后调用toString()方法,得到一个空字符串"",表达式变为""==0

第二步: 字符串跟数字比较时,把字符串转换为数字,表达式变为0==0

注:ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。

各类型调用valueOf或toString后的结果请点击

 +运算符

A+B时会执行以下过程:

第一步:A和B分别转换成原始值,记为A1和B1

第二步:如果A1或B1中有一个是字符串,如果A1和B1中有一个值为string,则将A1、B1都转换为string(执行ToString),其值记为A2、B2,将A2 B2连接后就是A+B的结果

第三步:如果不满足条件2,则将A1和B1都转换为number(执行ToNumber),其值记为A3、B3,将A3 B3相加即为A+B的结果

原始值转为Number的过程如下,方了方便叙述,原始值统一用obj代替:

  1. 如果obj为原始值,直接返回;
  2. 否则调用 obj.valueOf(),如果执行结果是原始值,返回之;
  3. 否则调用obj.toString(),如果执行结果是原始值,返回之;
  4. 否则抛异常。

了解了上述的转换机制后,下面的例子就很简单了

true + 1 // 1,布尔型转化为了数字[] + 1 ??// ‘1‘,空数组转化为了字符串{} + 1 ??// 1,空对象转化为了数字var now = new Date()typeof (now + 1) // ‘string‘,日期对象转化为了字符串

js ==和+

原文地址:https://www.cnblogs.com/94pm/p/8504473.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved