《前端之路》之二:数据类型转换 && 隐式转换 || 显式转换
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数据 ...
随机推荐
- Python Assert 为何不尽如人意
Python中的断言用起来非常简单,你可以在assert后面跟上任意判断条件,如果断言失败则会抛出异常. >>> assert 1 + 1 == 2 >>> ass ...
- (一)JUnit简介
单元测试是测试应用程序的功能是否能够按需要正常进行,是一个对单一实体(类或方法)的测试. JUnit是一个Java编程语言的单元测试框架. 单元测试框架是一部分代码,可以确保另一端代码(方法)按预期工 ...
- .Net core Web API导出数据到Excel
前言 产品经理有一个需求,就是将cosmosDB里的数据,导出到Excel中. 1.新建一个.net core web api controller 添加引用:EPPlus.Core Install- ...
- CSS操作笔记
编写css样式:1. 标签的style属性2. 写在head里面 style标签中写样式- id选择区#i1{background-color: #2459a2;height: 48px;}- cla ...
- c# 如何找到项目中图片的相对路径
c# 如何找到项目中图片的相对路径 string path = System.Environment.CurrentDirectory;//非Web程序if (System.Environment.C ...
- BZOJ_1101_[POI2007]Zap_莫比乌斯反演
题意:FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a ,y<=b,并且gcd(x,y)=d.作为FGD的同学,FGD希望得到 ...
- linux 搜索某个系统命令的位置
Which命令 功能简述which命令的作用是在PATH变量指定的路径中搜索某个系统命令的位置并且返回第一个搜索结果.也就是说使用which命令就可以看到某个系统命令是否存在以及执行的到底是哪一个位置 ...
- 毕业原版=[约克大学毕业证书]York原件一模一样证书
约克大学毕业证[微/Q:2544033233◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归& ...
- 【毕业原版】-《巴斯大学毕业证书》Bath一模一样原件
☞巴斯大学毕业证书[微/Q:865121257◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归&am ...
- 若干排序算法的Python实现方法及原理
今天突然想到了一个问题:让你立即把堆排.快排等等排序算法写出来会不会,并且不能犯逻辑错误? 我说:不会,至少需要思考一下,并且可能还需要时间调试. 之前总是觉得,不就是排序算法吗?有什么大不了的?网上 ...