02.【JS基础】数据类型的转换方法

JavaScript

由于JavaScript是弱类型语言,故其有强类型语言没有的隐式转换。除此之外,还可通过强制类型转换转换函数处理转换值得类型。

1.隐式类型转换

所谓隐式类型转换,即不同类型的数据在做运算时可以进行默认的数据类型转换。

隐式转换法则

  • 1.1 字符串 + 数字/布尔值/null/undefined : 非字符串转换为字符串;
  • 1.2 undefined + 非字符串(null/数字/布尔值/undefined) : NaN;
  • 1.3 null + 数字/布尔值 : null 转换为0,true转换为1,false转换为0;
  • 1.4 布尔值 + 布尔值 : 布尔值转换为数字。

优先级排序 :字符串 > undefined > null >= 数字

2.强制类型转换

一共有三种强制类型的转换:Boolean(value);Number(value);String(value)。用这三个函数转换值,将创建一个新值,存放原始值转换后的值

2.1 Boolean()——将给定的值转换成布尔型

  • 当要转换的值是 ==空字符串== / ==数字0== / ==undefined== / ==null== 四种情况之一时,返回false;否则返回true。
var aaa;
var bbb = null;
var ccc = "null";
var ddd = new Object();

Boolean(0);     //false
Boolean("");        //false

Boolean(undefined); //false
Boolean(aaa);       //false

Boolean(null);      //false
Boolean(bbb);       //false
Boolean(ccc);       //true ccc是值为"null"的字符串

console.log(ddd)    //{}
Boolean(ddd);       //true

2.2 Number()——将给定值转换为数字

  • 布尔值true被转换为1
  • 布尔值false和null被转换为0
  • undefined和无法被转换为数字的字符串(如"4.3.2"/"abc")被转换为NaN
var aaa;
var bbb = null;
var ccc = "null";
var ddd = new Object();

Number(true);   //1
Number(false);  //0

Number(aaa);  //NaN
Number(undefined);  //NaN

Number(bbb);   //0
Number(null);   //0

Number("2.1.0");    //NaN
Number("abc");      //NaN
Number("2.1abc");   //NaN

Number("2.1");      //2.1

2.3 String()——将给定值转换为字符串

  • 此方法最简单,它可将任何值转换为字符串
var ddd = new Object();

String(false);      //"false"
String(null);       //"null"
String(undefined);  //"undefined"
String(ddd);        //"[object Object]"

3.转换函数

3.1 toString()

  • 转换为字符串,类似于String(),但undefined和null的转换报错
var ddd = new Object();

toString(false);      //"false"
toString(null);       //"null"
toString(undefined);  //"[object Undefined]"
toString(null);        //"[object Undefined]"
toString(ddd);        //"[object Undefined]"

3.2 parseInt()

parseInt("aaa");    //NaN
parseInt("123");    //123
parseInt("12aaa");    //12
parseInt("aaa12");    //NaN
parseInt("123aaa12");    //123

parseInt(null);       //NaN
parseInt(undefined);   //NaN


3.3 parseFloat()

parseFloat("1.23sdf");   //1.23
parseFloat("sdf1.23");   //NaN
parseFloat("2.33sdf1.23");   //2.33

parseFloat(null);   //NaN
parseFloat(undefined);   //NaN

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容