影子的知识库

影子的知识库

  • 知识库
  • GitHub

›JS 基础

JVM系列

  • JVM内存区域
  • 对象创建-布局-访问
  • 内存溢出实战
  • 内存区域回收
  • 四大引用
  • 垃圾回收算法
  • HotSpot回收算法细节

Java系列

  • java注解
  • springboot请求参数绑定
  • springboot请求参数校验框架
  • YAML语法
  • 动态代理
  • classpath和java命令
  • springboot-aop编程
  • springboot统一异常处理
  • springboot数据库和事务
  • springboot拦截器
  • springboot中的web配置
  • docker的简单开发
  • springboot自动配置
  • 数据库的隔离级别
  • springboot监控
  • java类加载
  • java-agent的相关内容
  • 类加载器详解
  • java的SecurityManager
  • maven学习

Node

    JS 基础

    • 语法基础和数据类型
    • 数据类型转换
    • 语句 表达式 运算符
    • 变量与对象
    • 函数
    • 数据处理
    • 常用 API
    • 重点知识

    ES6

    • 块级作用域
    • 字符串和正则表达式
    • 函数
    • 对象
    • Symbol
    • Set和Map
    • 迭代器和生成器
    • 类
    • 数组
    • Promise

    Node 基础

    • 模块系统
    • package.json
    • 内置对象
    • npm脚本的使用
    • Buffer
    • Stream
    • 事件循环机制
    • 示例代码

    stream系列

    • 流的缓冲
    • 可读流
    • 可写流
    • 双工流和转换流
    • 自定义流

后期计划

  • 学习计划
  • 专题研究计划
Edit

本文内容

本文主要是记录 Javascript 中关于类型转换的一些内容。

string 与 number 转换

  • Number 将字符串转数字的时候,遇到非数字的情况,会返回 NaN,例如:

    var a = Number('100x') -1;
    console.log(a); // NaN,100x 无法转换成数字
    
  • parseInt 和 parseFloat 会忽略数字以外的字符,并且第二个参数视为基数,例如:

    var a = parseInt('100x') -1;
    console.log(a); // 99, 这里忽略了 100x 后面的字母
    var b = parseInt('x100') -1;
    console.log(b); // NaN, 字母在前面的话也视为 NaN
    var c = parseInt('17',2);
    console.log(c); // 输出 1,因为 17 中的 7 在二进制中是不存在的,所以会被忽略掉,解析为 1
    var d = parseInt('17',16);
    console.log(d); // 输出 23,因为 17 按照16进制解析后是:16 * 1 + 7 = 23
    

隐式转换

只要在数值运算操作数的位置上书写字符串值,该值就将被隐式地转换为数值类型,例如:

console.log('100'-1); // 99
console.log('100' - '1'); // 99
console.log('100' - ''); // 100

如果是加法运算,操作数上有字符串的话,那么就会转换成字符串之间的连接操作,例如:

console.log('100' + 1); // 1001
console.log(1 + '100'); // 1100
console.log('100' - ''); // 100

+ 作为单目运算符的时候,作为正号计算,将操作数转换成数值类型,例如:

console.log(typeof +'100'); // number
console.log(+'100'); // 100
console.log(typeof +{}); // number
console.log(+{}); // NaN

string 和 number 类型转换的常用方式

数值转字符串值:

var n = 3;
console.log(typeof (n + '')); // string

字符串值转数值:

var s = '3'
console.log(typeof +s); // number

特殊转换

转换的对象数据类型转换结果
无法被转换为数值的字符串值转换为数值类型NaN
空字符串值转换为数值类型数值 0
数值 NaN转换为字符串型字符串 'NaN'
数值 Infinity转换为字符串型字符串 'Infinity'
数值 -Infinity转换为字符串型字符串 '-Infinity'

布尔型转换

以下值会被转换成 false:

  • 数值 0
  • 数值 NaN
  • null 值
  • undefined 值
  • 字符串值 ''(空字符串值)

除了以上值外,都会被转换成布尔值 true (也就是说 object 类型的值,永远转换成 true)

常用转换方式

通常不会使用 Number() 函数将其它值转换成布尔值,而是下面这样:

var s = 1;
console.log(!!s); // true

其它的转换

被转换的值转换为数值型转换为字符串型
true1'true'
false0'false'
null 值0'null'
undefined 值NaN'undefined'

object 和基本类型的转换

对 object 进行的转换:

转换后的类型显式转换方法说明
字符串型String(obj)将 toString() 方法的结果转换成字符串型
数值型Number(obj)即 valueOf() 方法的结果,如果该结果不能转换成数值型,则改为 toString() 方法的结果转为数值型
布尔型Boolean(obj)总是 true
undefined 型NaN'undefined'

转换成 object 类型:

被转换值的类型转换结果
字符串型String 对象
数值型Number 对象
布尔型Boolean 对象
null 型Error 对象
undefined 型Error 对象
Last updated on 11/8/2020
← 语法基础和数据类型语句 表达式 运算符 →
  • string 与 number 转换
    • 隐式转换
  • string 和 number 类型转换的常用方式
  • 特殊转换
  • 布尔型转换
    • 常用转换方式
  • 其它的转换
  • object 和基本类型的转换
影子的知识库
Docs
Getting Started (or other categories)Guides (or other categories)API Reference (or other categories)
Community
User ShowcaseStack OverflowProject ChatTwitter
More
BlogGitHub
Copyright © 2020 Cen ZhiPeng