位置: 编程技术 - 正文

详解JavaScript中双等号引起的隐性类型转换(javascriptz)

编辑:rootadmin

推荐整理分享详解JavaScript中双等号引起的隐性类型转换(javascriptz),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript !,javascript含义,javascript详细介绍,javascript definitive guide,javascript的用法,javascriptz,javascript的用法,javascriptz,内容如对您有帮助,希望把文章链接给更多的朋友!

引子

if语句应该是程序员用的比较多的语句,很多时候都要进行if判断,if语句一般用双等号来判断前后两个元素是否是一致的,假如是一致,那么返回是true,然后执行下面的语句,否则,执行别的语句。本文所说的隐性类型的转换,说的是==引起的转换。举个简单的例子,双等号不是全等号,全等号是“===”三个等号,语句"1"==1,那么一般情况下是前面的字符串”1“转换为数字1,然后进行比较。通过这个例子应该了解了什么是隐性类型的转换了吧!

隐性类型转换步骤

一、首先看双等号前后有没有NaN,如果存在NaN,一律返回false。

二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)

三、接着看双等号前后有没有字符串, 有三种情况:

1、对方是对象,对象使用toString()或者valueOf()进行转换;2、对方是数字,字符串转数字;(前面已经举例)3、对方是字符串,直接比较;4、其他返回false四、如果是数字,对方是对象,对象取valueOf()或者toString()进行比较, 其他一律返回false

五、null, undefined不会进行类型转换, 但它们俩相等

上面的转换顺序一定要牢记,面试的时候,经常会出现类型的问题。

.toString()方法和.valueOf()方法数值转换

详解JavaScript中双等号引起的隐性类型转换(javascriptz)

通常情况下我们认为,将一个对象转换为字符串要调用toString()方法,转换为数字要调用valueOf()方法,但是真正应用的时候并没有这么简单,看如下代码实例:

同理,我们再看valueOf()方法:

从上面的代码可以看出,valueOf()方法并没有将对象转换为能够反映此对象的一个数字。相反,我们用toString()

注:很多朋友认为,转换为字符串首先要调用toString()方法, 其实这是错误的认识,我们应该这么理解,调用toString()方法可以转换为字符串,但不一定转换字符串就是首先调用toString()方法。

我们看下下面代码:

上面代码我们可以看出,转换首先调用的是valueOf(),假如valueOf()不是数值,那就会调用toString进行转换!

假如"1"是字符串,那么它首先调用的还是valueOf()。

上面的例子,调用的是toString();因为arr.toString()之后是2。

转换过程是这样的,首先arr会首先调用valueOf()方法,但是数字的此方法是简单继承而来,并没有重写(当然这个重写不是我们实现),返回值是数组对象本身,并不是一个值类型,所以就转而调用toString()方法,于是就实现了转换为字符串的目的。

小结

大多数对象隐式转换为值类型都是首先尝试调用valueOf()方法。但是Date对象是个例外,此对象的valueOf()和toString()方法都经过精心重写,默认是调用toString()方法,比如使用+运算符,如果在其他算数运算环境中,则会转而调用valueOf()方法。

javascript基本语法 1、运算符运算符就是完成操作的一系列符号,它有七类:赋值运算符(=,+=,-=,*=,/=,%=,=,=,|=,&=)、算术运算符(+,-,*,/,++,--,%)、比较运算符(,,=,=,==,===,!=,!==)、

javascript事件模型介绍 一、原始事件模型其事件类型:分为"输入事件(如onclicki)"和"语义事件(如onsubmit)"事件程序的注册可以以下几种方式:1、JS代码作为HTML性质值inputtype="button"va

页面get请求 中文参数方法乱码问题的快速解决方法 对于get方式,请求参数中存在中文,可以使用下面的方法进行处理:两次使用encodeURI()方法:例如:encodeURI(encodeURI(中文)),然后再服务器中使用URLDecoder.

标签: javascriptz

本文链接地址:https://www.jiuchutong.com/biancheng/370085.html 转载请保留说明!

上一篇:JavaScript中的操作符类型转换示例总结(javascript 操作css)

下一篇:javascript基本语法(javascript基础)

  • 可以抵扣的进项税额是什么意思
  • 应征增值税不含税销售额(3%征收率)怎么填2020年
  • 母子公司往来明细账正反面都可以写吗
  • 广告公司可以开劳务费吗
  • 资本化的借款利息支出计入什么科目
  • 一般纳税人取得小规模专用发票可以抵扣吗
  • 增值税纳税义务发生时间
  • 营改增抵减的销项税额是什么意思
  • 成本类与费用类科目哪些区别
  • 没有及时报关怎么办
  • 应付职工薪酬社保
  • 应纳税所得额数学
  • 劳务报酬算公积金基数吗
  • 企业为员工承担个人所得税
  • 个人开增值税普通发票税率
  • 国家金库为什么扣我银行里的钱
  • 进项税额转出与销售额配比异常
  • 可转债税前收益和税后收益
  • 不具有法人资格的企业形式
  • 企业新建厂房
  • 录入凭证时记账的依据是
  • 固定资产抵扣的税率
  • linux转换windows
  • 英雄联盟登录失效怎么回事
  • 出口退税的会计分录实例
  • 异地增值税预交可以网上缴纳吗
  • php数组函数有哪些
  • PHP+Mysql+jQuery中国地图区域数据统计实例讲解
  • 标书装订费用分录
  • 收到预付款计入什么科目
  • phpstudy的ftp
  • 付款凭证怎么填写电脑
  • php对接微信支付教程
  • 支付征地补偿款计入什么科目
  • 售后租回交易的实质是什么
  • yolov2训练
  • 合伙企业利润分配首要依据
  • php时间转换成时间戳
  • 采购员出差预借差旅费
  • 10年未被强制修复!黑客利用Windows旧漏洞攻击通信公司并分发恶意文件
  • php字符串比较函数怎么写
  • php支付宝和微信在线支付
  • 主营业务成本入账分录
  • 帝国cms功能
  • python获取字符串中汉字的个数
  • 在php中声明变量时,变量名称以什么符号开头
  • 基于sqlite特殊字符转义的实现方法
  • 建安企业确认收入的依据
  • 采购原材料凭证是什么
  • 应付帐款借方余额,但对方公司己注销
  • 固定资产达到预定状态的判定
  • 增值税税控系统技术维护费怎么抵扣
  • 外币收款怎么做账
  • 办理食品经营许可证需要什么条件
  • 合资公司股东如何退股
  • 用友T3怎么结转成本费用
  • 非流动资产减少
  • 固定资产会计账簿
  • 结转本月销售材料成本
  • 建账的三个基本步骤
  • mysql5624安装教程
  • bios如何设置关机键开机
  • mac怎么访问windows
  • enterasys
  • explorer.exe是啥意思
  • linux命令telnet
  • windows文件丢失怎么修复
  • win7电脑怎么设置自动锁屏
  • 查看电脑是否可以装两个固态
  • 防火墙ddos攻击防范
  • 可以自己做手写的软件
  • angular.js
  • js控制横向滚动条
  • javascript基础笔记
  • nodejs集成sqlite使用示例
  • unity游戏开发的技术路线有哪些
  • Protocol Buffers(Protobuf)开发者指南---概览
  • jquery图片左右切换
  • 云南省电子税务局怎么改号码
  • 我国现行税法体系中采用多次课征的税种是
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设