本文主要是介绍JS基础(一):String、Number、Boolean数据类型转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
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 = a + "";
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
var c = "-10.5cd";
console.log(parseInt(c)); // -10
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('3.14.56')); // 3.14
console.log(parseFloat('some3.14')); // NaN
4、隐式转换:[string-0]或者[+string]
console.log('123'-0); // 123
console.log(+'456'); // 456
5、注意: NaN
与任何数值进行算数计算得到的结果都是NaN
console.log(typeof NaN) // 'number'
console.log(NaN === NaN); // false
console.log(NaN !== NaN); // true
由于NaN
与NaN
不相等的特性,所以在判断是否是NaN
时,不能直接比较,需要将其转换为字符串 'NaN'
进行比较。
// 判断一个未知字符是否被转换为了可运算number类型
const result= Number("qwerdf");
let start = 0;
if(String(result) === 'NaN'){throw new Error("不是一个可运算number类型");
} else {return start += result;
}
三、转换为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版)
这篇关于JS基础(一):String、Number、Boolean数据类型转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!