JS数据类型转换规则显示类型转换

JS数据类型

基础类型

  • String
  • Boolean
  • Number
  • Symbol
  • Undefine
  • Null(typeof(null) === "object")

复合类型: 对象

  • Object(Array, Json)

显示类型转换

Number的原始类型转换规则

  • 数值转换后还是数值
  • 字符串如果可以解析为数值则为数值, 空字符串为0, 无法解析的字符串为NaN
  • 布尔转数值, true转为1, false转为0
  • null转换为0

Number的对象类型转换规则

传入实例M, 先调用M的valueOf(), 如果返回值V为基本数据类型, 则直接使用Number(V), 求最终返回值 如果T不属于基本数据类型, 则调用M的toString(), 如果返回值S为基本数据类型, 则直接使用Number(S),求最后的结果, 如果S不属于基本数据类型, 则直接返回NaN

String的原始类型转换规则

  • 数值(Number)转为相应的字符串
  • 字符串(String) 转换后还是字符串
  • 布尔值(Boolean)转换规则: true => 'true', false=> 'false'
  • undefine 转换为"undefine"
  • null 转换为'null'

String 的对象类型转换规则

与Number的对象转换规则类似, 区别是: 先调用对象的toString(), 然后再调用valueOf() 其实正常情况下, 对象调用自身的toString()后, 对象就可以转换为string基本类型, valueOf() 没有机会被调用, 但万事有个例, 如果我们重新定义了对象的toString()方法,使其返回非基本类型的值, 那样就有机会调用对象的valueOf()方法了

Boolean的原始类型转换 和 对象类型转换

undefined,null,NaN,'',-0,+0皆为false, 其余为true

隐式类型转换

四则运算+, -, *, /

判断语句 if()

Native调用 console.log(), alert()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端杂货铺

类型转换的判定方式

对于“==”,我们肯定不陌生,但是背后的判定机制我们可能不是很熟悉,我现在先举一些例子,最后再总结一下大概的方法: null == undefined // ...

35170
来自专栏WD学习记录

C#学习笔记(五)

简单的按照成员副职对象可以通过派生于System.Object的MemberwiseClone()方法来完成。这是一个受保护的方法,但很容易在对象上定义一个调用...

7010
来自专栏伦少的博客

scala 下划线使用指南

原文地址:https://my.oschina.net/joymufeng/blog/863823   作者:joymufeng

37880
来自专栏云霄雨霁

Java--lambda(λ)表达式

24660
来自专栏java技术学习之道

最详细的java泛型详解

23150
来自专栏编程

对Python中的类做简要的分析

在Python中,定义类是通过class关键字,class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪...

209100
来自专栏开发与安全

从零开始学C++之构造函数与析构函数(三):深拷贝与浅拷贝、空类与空数组

一、深拷贝与浅拷贝 说得简单点,假设一个类有指针成员,如果在拷贝的时候顺带连指针指向的内存也分配了,就称为深拷贝,如下图(v2 从 v 拷贝而来): ? 如果只...

1K00
来自专栏行者常至

泛型中获取到Class

65120
来自专栏LanceToBigData

JavaSE(六)包装类、基本类型和字符串之间的转换、==和equals的区别

一、包装类 Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足, 在设计类时为每个基...

18670
来自专栏前端桃园

[第1期] ES6之路--对象的扩展

13920

扫码关注云+社区

领取腾讯云代金券