重学Javascript之类型转换
时间:2022-07-22
本文章向大家介绍重学Javascript之类型转换,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
强制类型转换(显示类型转换)
- Number()
- Boolean()
- String()
调用数组、函数、对象和正则表达式的valueOf() 会返回对象本身。日期类定义的valueOf()方法会返回它的一个内部表示:1970年1月1日以来的毫秒数。
自动类型转换
加号(+) 运算符
- 作为一元运算符: 常用于将操作数转换为数值
- 作为二元运算符
- 如果其中一个为对象,则会将对象转换为原始类型。日期对象通过调用toString()执行转换,其他的通过valueOf()(**如果valueOf()返回一个原始类型的值得话**)。由于多数对象不具备可用的valueOf()方法,因此他们会通过toString()来进行转换。
- 对象转换成原始类型的值后,如果其中一个为字符串的话,另一个操作数也要转换成字符串,然后进行字符串的拼接。
- 否则,两个数都转换为数字(或者NaN),然后进行加法操作。
两个例题
有一个很有意思的一个,不能以上面的规则理解: {} + {} : NaN (其实在Chrome控制台,输出的为:"object Object") {} + [] : 0
这是因为,浏览器会把第一个{} 作为一个空的代码块解析,因此上面的两个分别就等价于: + {} , + [] 因此,得到上面相应的结果。
这里添加一个这两个的转换过程: 上面说了,分别等价于 + {} 和 + [] 。因此,+作为一元运算符,要把其后面的{} 和 []转换为整数。这个转换相当于Number({}) 和Number([])。在最开始我们就介绍了通过Number()进行转换的原则:
- 先调用valueOf()方法。对于对象来说,valueOf()方法返回的是其本身。
image.png - 既然上面的返回的不是基本类型,再调用toString()方法。分别返回 ”object Object“ 和 ”“。这是属于基本类型的(String)。因此对他们分别调用Number(),转换后的值分别为: NaN 和 0
== 运算符
- 如果一个是null,一个是undefined,则返回true
- 如果一个是数字,一个是字符串,则将字符串转换为数字,然后再进行比较。
- 如果一个值为布尔值,将其转换为数字
- 如果一个数值为对象,另一个为数值或者是字符串,则先将对象通过valueOf()或toString()转换为原 始类型,然后再比较。(JS核心的内置类会首先尝试valueOf(),再尝试使用toString().除了日期类,日期类只使用toString()转换。)
- 不满足上面的,均为false
这里要注意: 在 + 或 ==进行的隐式转换中,对象(除了日期类型)都是先尝试使用valueOf()进行转换,然后再尝试使用toString()。
- 2017年发生在上海的科技大新闻
- REST当中为什么要使用HTTP PUT
- 推荐一个在Linux/Unix上架设ASP.NET的 WEB服务器--Jexus
- 人工智能与工业融合:没有你,对我很重要……
- DeepMind哈萨比斯对话哈里王子:2018年AI最大的突破在生物或化学
- 提升用户体验,微信小程序“授权失败”场景的优雅处理
- extjs 基础部分
- WordPress 网站开发“微信小程序”实战(二)
- Extjs form 组件
- Extjs grid 组件
- WordPress 网站开发“微信小程序”实战(三)
- Extjs mvc
- Extjs 数据代理
- WordPress 网站开发“微信小程序”实战(四)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 面试常考算法之区间问题
- 爬虫 | JS逆向某验滑动加密分析
- LeetCode | 28.实现strStr()
- Redis | Redis 哈希相关命令
- 如何访问SAP Spartacus里的config数据
- 工具系列 | HTTP API 身份验证和授权
- Providers in SAP Spartacus
- 详解ELF可执行文件格式:读取头部信息和程序表头
- 我用 Python 写了个基金涨跌通知助手
- 模仿腾讯新闻做了款新闻阅读小程序
- 使用关键点进行小目标检测
- 彻底搞懂 etcd 系列文章(八):etcd 事务 API
- 使用docker搭建一套开发环境全家桶
- TypeScript里的.d.ts语法
- 宋宝华:当Linux内核遭遇鲨鱼—kernelshark