《前端之路》之二:数据类型转换 && 隐式转换 || 显式转换
02:数据类型转换 && 隐式转换 || 显式转换
在上一个章节中,我们介绍了 JavaScript 的基本的数据类型,由于是弱类型语言,所以不需要 在很多时候去定义这个数据的类型,而且也不能够在定义了这个数据类型之后再去改变这个数据类型。
当遇到一个需要对数据类型进行改变的场景的时候,JS 就显示出来它的优势了,可以对数据类型进行轻松的转换,那么下面 我们就开始介绍 如何轻松的对数据类型进行转换,以及在转换的过程中,我们需要非常注意点问题。
一、从 数字类型 转换成 字符串类型
A、 显式转换
const numberA = 123
console.log(typeof numberA) // number
String(numberA) // "123"
numberA.toString() // "123"
B、 隐式转换
const numberB = 456
console.log(typeof numberA) // number
const stringB = numberB + '' // "456"
TIPS:
特殊数值的隐士转换
const aNumber = NaN
const bNumber = Infinity
const cNumber = -Infinity
console.log(typeof aNumber) // number
console.log(typeof bNumber) // number
console.log(typeof cNumber) // number
const aString = aNumber + '' // "NaN"
const bString = bNumber + '' // "Infinity"
const cString = cNumber + '' // "-Infinity"
console.log(typeof aString) // string
console.log(typeof bString) // string
console.log(typeof aString) // string
二、从 字符串类型 转换成 数字类型
A、 显式转换
const aString = "789"
const bString = "789xxx"
const cString = "xxx789"
// Number()
let aNumber1 = Number(aString) // 789
let aNumber2 = Number(bString) // NaN
let aNumber3 = Number(cString) // NaN
// parseInt()
let bNumber1 = parseInt(aString) // 789
let bNumber2 = parseInt(bString) // 789
let bNumber3 = parseInt(cString) // NaN
/* 是不是很困惑,为什么 bNumber2 和 bNumber3 的返回值是不一样的?*/
/* 那么我们顺手查了一下 手册 parseInt() 方法 */
/* tips: 如果传入的 string 开头为 1~9 的数字 或者 '0x'、('0X') */
/* 那么 parseInt 会返回对应的 整数部分的 数值,从而忽略掉数值后面跟随的 字符串 */
/* 至于 '0x' 则是因为 16 进制的原因。 同理 10进制 */
// parseFloat()
let cNumber1 = parseFloat(aString) // 789
let cNumber2 = parseFloat(bString) // 789
let cNumber3 = parseFloat(cString) // NaN
// 看来 parseFloat 和 parseInt 情况是一样的。
B、 隐式转换
const aString = "789"
const bString = "789xxx"
const cString = "xxx789"
let dNumber1 = + aString // 789
let dNumber2 = + bString // NaN
let dNumber3 = + cString // NaN
// tips: 慎用 '789' + 0 || 0 + '789'
let x = '789' + 0 // '7890'
let y = '789' - 0 // 789
// 不要问为什么~ 就是这么 6
隐式转换 中 不常见类型的转换结果
let aBool = + false // 0
let bBool = + true // 1
let aNaN = + NaN // NaN
let aNull = + null // 0
let aUndefind = + undefined // NaN
let obj = {}
let aObj = + {} // NaN
// 引用对象类型在被 隐式转换 过后往往都是 NaN
以上则为 这个章节的内容, 欢迎 star, 地址 >>> 《前端之路》之二:数据类型转换 && 隐式转换 || 显式转换
《前端之路》之二:数据类型转换 && 隐式转换 || 显式转换的更多相关文章
- Scala入门系列(十二):隐式转换
引言 Scala提供的隐式转换和隐式参数功能,是非常有特色的功能.是Java等编程语言所没有的功能.它可以允许你手动指定,将某种类型的对象转换成其他类型的对象.通过这些功能可以实现非常强大而且特殊的功 ...
- oracle数据类型及其隐式转换
oracle有三种最基本的数据类型,即字符型.数值型.日期型. oracle提供的单行函数中,针对不同的数据类型,提供大量实用的函数,同时提供一系列数据类型转换函数,如下: 1)to_char ...
- DB性能-隐式转换
1 什么是隐式转换 当源数据的类型和目标数据的类型不同的时候,如果没有转换函数,就会发生隐式转换,也称自动转换.当然, 有些情况下有些类型是不可以发生转换的,比如说从DATE类型转换到N ...
- 显示转换explicit和隐式转换implicit
用户自定义的显示转换和隐式转换 显式转换implicit关键字告诉编译器,在源代码中不必做显示的转型就可以产生调用转换操作符方法的代码. 隐式转换implicit关键字告诉编译器只有当源代码中指定了显 ...
- C# 数据类型转换 显式转型、隐式转型、强制转型
C# 的类型转换有 显式转型 和 隐式转型 两种方式. 显式转型:有可能引发异常.精确度丢失及其他问题的转换方式.需要使用手段进行转换操作. 隐式转型:不会改变原有数据精确度.引发异常,不会发生任何问 ...
- ECMAScript1.1 js书写位置 | 声明变量 | 基本数据类型 | 数据类型转换 | 操作符 | 布尔类型的隐式转换
js书写位置 由于在写css样式时使用的时双引号,所以我们在写js代码时建议使用单引号(‘’)! 行内式 <input type="button" value="点 ...
- Scala进阶之路-Scala高级语法之隐式(implicit)详解
Scala进阶之路-Scala高级语法之隐式(implicit)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们调用别人的框架,发现少了一些方法,需要添加,但是让别人为你一 ...
- 大数据技术之_16_Scala学习_06_面向对象编程-高级+隐式转换和隐式值
第八章 面向对象编程-高级8.1 静态属性和静态方法8.1.1 静态属性-提出问题8.1.2 基本介绍8.1.3 伴生对象的快速入门8.1.4 伴生对象的小结8.1.5 最佳实践-使用伴生对象解决小孩 ...
- C#中的类型转换-自定义隐式转换和显式转换
目录 前言 基础知识 示例代码 实际应用 问题 答案 报错 用户定义的转换必须是转换成封闭类型,或者从封闭类型转换 参考 其他 应用和设计 读音 参考 前言 有时我们会遇到这么一种情况:在json数据 ...
随机推荐
- SecureCRT在同一窗口打开多个标签
打开SecureCRT - 文件 - 连接 ,勾选"在标签页中打开".
- 面试时怎样回答:你对原生ajax的理解
很多人跟我一样用习惯了jq封装好的$.ajax,但是面试时,原生ajax是很多面试官喜欢问的问题,今天再查资料,打算好好整理一下自己理解的原生ajax. 首先,jq的ajax:一般我常用的参数就是这些 ...
- CTF中常见的加解密(经典)
今天一早起来,就要去做早操,心里苦呀! 但是不影响我为未来的学弟学妹整理资料的心情呀!希望我的一些拙见能够帮助到学弟学妹! 永远爱你们的 ---- 新宝宝 ASCII编码 ASCII 码使用指定的7 ...
- ASP.NET Core Web API 索引 (更新Identity Server 4 视频教程)
GraphQL 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(上) 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(下) [视频] 使用ASP.NET C ...
- go语言调度器源代码情景分析之一:开篇语
专题简介 本专题以精心设计的情景为线索,结合go语言最新1.12版源代码深入细致的分析了goroutine调度器实现原理. 适宜读者 go语言开发人员 对线程调度器工作原理感兴趣的工程师 对计算机底层 ...
- [翻译 EF Core in Action 1.6]你的第一个EF Core应用程序
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...
- 《k8s-1.13版本源码分析》-源码调试
源码分析系列文章已经开源到github,地址如下: github:https://github.com/farmer-hutao/k8s-source-code-analysis gitbook:ht ...
- Shell编程(week4_day5)--技术流ken
本节内容 1. 三剑客简介 2. sed命令详解 3. awk命令详解 文本处理三剑客 在 Shell 下使用这些正则表达式处理文本最多的命令有下面几个工具: 命令 描述 ...
- OAuth2.0记录
阮一峰老师讲解OAuth2.0 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 举例详解: https://www.cnblogs.com/ ...
- 史上最全的大厂Mysql面试题在这里!
1.MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联: 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中: 从:io线程——在使用star ...