JS基础(一):数据类型转换

前言

ECMAScript 标准定义了 7 种数据类型: Number,String,Boolean,Null,Undefined,Object,Symbol(ES6新增) 。其中,Number,String,Boolean,Null,Undefined,Symbol为原始数据类型,Object为对象数据类型。

普通的JavaScript对象是“命名值”的无序集合,JavaScript同样定义了一种特殊对象——数组(array),表示带编号的值的有序集合

JavaScript还定义了另一种特殊对象——函数。函数是具有与它相关联的可执行代码的对象,通过调用函数来运行可执行代码,并返回运算结果。

一、转换为字符串类型

1、 toString() :此方法不可转换null以及undefined,否则报错!

var a = 5;
console.log(a.toString());	//"5"
var b = null;
console.log(b.toString());	//Uncaught TypeError: Cannot read property 'toString' of null
var c = undefined;
console.log(c.toString());	//Uncaught TypeError: Cannot read property 'toString' of undefined

2、String() :可以把任意值转换成字符串。

var a = null;
console.log(String(a));	//"null"
var b = undefined;
console.log(String(b));	//"undefined"

3、隐式转换:[num+""]

var a = 5;
var b = 5 + "";
console.log(b);	//"5"
二、转换为数值类型

1、Number():可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,则返回NaN。

var a = "5";
console.log(Number(a));	//5
var b = "51cd";
console.log(Number(b));	//NaN
// 常见值转换
console.log(Number(""));		//0
console.log(Number(true));      //1
console.log(Number(false));     //0
console.log(Number(undefined)); //NaN
console.log(Number(null));      //0

2、parseInt():解析一个字符串参数,并返回一个指定进制的整数 。语法:parseInt(string, radix)。

// 返回8进制数
console.log(parseInt("17", 8));   //15
// 返回10进制数
console.log(parseInt("015", 10)); //15
// 返回16进制数
console.log( parseInt(" F", 16));  //15
// 如果第一个字符是数字会解析直到遇到非数字结束
var a="10.5cd";
console.log(parseInt(a));         //10
//如果第一个字符不是数字或者符号就返回NaN
var b="ef10.5";
console.log(parseInt(b));          //NaN

3、parseFloat():解析一个字符串参数并返回一个浮点数,如果给定值不能被转换成数值,则会返回 NaN。
● 如果 parseFloat 在解析过程中遇到了正号(+)、负号(- U+002D HYPHEN-MINUS)、数字(0-9)、小数点(.)、或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数。
● 第二个小数点的出现也会使解析停止(在这之前的字符都会被解析)。

console.log(parseFloat('314e-2'));     //3.14
console.log(parseFloat('0.0314E+2'));  //3.14
console.log(parseFloat(' 3.14some ')); //3.14
console.log(parseFloat('some3.14'));   //NaN

4、隐式转换:[string-0]或者[+string]

console.log('123'-0); //123
console.log(+'456');  //456 
三、转换为Boolean类型

1、Boolean():可以将任意类型的值转为布尔值。

console.log(Boolean(1));         //true
console.log(Boolean(0));         //false
console.log(Boolean('1'));       //true
console.log(Boolean('0'));       //true
console.log(Boolean( ));         //false
console.log(Boolean(''));        //false
console.log(Boolean(null));      //false
console.log(Boolean(undefined)); //false

2、!! :可以将任意类型的值转为布尔值。(此方法不适用于空格)

console.log(!!1);         //true
console.log(!!0);         //false
console.log(!!'1');       //true
console.log(!!'0');       //true
console.log(!!'');        //false
console.log(!!null);      //false
console.log(!!undefined); //false
复制代码

发现一个有意思的事情:!代表取反,!!代表转换为Boolean类型,那!!!或者更多的!代表什么呢?
奇数的!代表取反,偶数的!代表转为Boolean类型;或者!>2都是在取反;或者可以说其实一个!是取反,两个!!是取反的取反,然后叠加的!也是一直在取反。

console.log(!1);         //false
console.log(!!1);        //true
console.log(!!!1);       //false
console.log(!!!!1);      //true
参考资料

1、MDN JavaScript 标准内置对象
2、JS 几种数据类型及其转换
3、JavaScript权威指南(第6版)

发布了45 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ThisEqualThis/article/details/101172707