标签:关注 hub tostring 单位 调用 运行 知乎 define mil
由于Javascript是一门弱类型的语言,在我们的代码中无时无刻不在发生着类型转换,所以了解Javascript中的类型转换对于了解我们认识Javascript的运行原理至关重要。
本文主要从数值转换这一维度来剖析在JS中,数值转换会遵循什么样的规则,有哪些用途?
我们都知道js中存在显式类型转换和隐式类型转换,其中显式类型转换包含:
隐式类型在js中的体现比较复杂,这里简单罗列以下几种情况:
由于js的弱类型特性,隐式类型转换其实是相对而言的,如果你了解了一段代码的类型转换方式,那么它对于你而言,就可以被视为显式转换。
由于Javascript中的隐式类型转换基本都是通过调用Number函数的方式进行的,所以这篇文章主要讨论不同显式类型转换的区别。在讨论之前,我们先看一段代码示例:
1 var a = ‘+3.14159test‘; 2 3 var num1 = Number(a); // NaN 4 var num2 = parseInt(a, 10); // 3 5 var num3 = parseFloat(a); // 3.14159 6 var num4 = +a // NaN 7 var num5 = -a // NaN
Number()可以用于转换任何类型。
https://tc39.github.io/ecma262/#sec-number-objects
1 var num1 = Number(true); // 1 2 var num2 = Number(false); // 0 3 var num3 = Number(12); // 12 4 var num4 = Number(); // 0 5 var num5 = Number(null); // 0 6 var num6 = Number(undefined); // NaN 7 var num7 = Number(‘012‘); // 12 8 var num8 = Number(‘-012‘); // -12 9 var num9 = Number(‘ 0x12‘); // 18 10 var num10 = Number(‘-0x12‘); // NaN 11 var num11 = Number(‘12test‘); // NaN 12 var num12 = Number( // 12 13 { 14 valueOf: function (){ 15 return ‘012‘ 16 }, 17 toString: function () { 18 return ‘012test‘ 19 } 20 } 21 )
仅用于转换字符串类型,首先会忽略字符串前面的空格。如果字符串一开始是数字或者加减号后边跟数字,则返回该字符串一直到非数字截止。
https://tc39.github.io/ecma262/#sec-parseint-string-radix
1 var num1 = parseInt(‘ 0xf‘); // 15 同parseInt(‘ +0xf‘) 2 var num2 = parseInt(‘ -0xf‘); // -15 3 var num3 = parseInt(‘ 12test‘); // 12 4 var num4 = parseInt(‘f‘); // NaN 5 var num5 = parseInt(‘f‘, 16); // 15 6 var num6 = parseInt(‘015‘, 8); // 13 7 var num7 = parseInt(‘15.34‘); // 15 8 var num8 = parseInt(‘f‘, ‘0x10‘); // 15
与parseInt类似,但只能接收一个参数,传入字符串只会按照10进制进行解析,会将传入的字符串解析成Double类型数字。
https://tc39.github.io/ecma262/#sec-parsefloat-string
1 var num1 = parseFloat(‘ 15.34.43‘); // 15.34 2 var num2 = parseFloat(‘0x123.45‘); // 0 因为不支持十六进制 3 var num3 = parseFloat(‘ 012.0test‘); // 12
一元加操作符的功能完全和Number()函数一致;一元减操作符是在加操作符的基础上取负值
当我们可以确定被转换的变量类型是string类型时,推荐优先使用parseFloat,可以当被转换变量为小数的正常使用;当使用parseInt时,推荐使用第二个参数来确定参数一的进制类型,避免因为不同浏览器的兼容问题;
在写作过程中,越写越发现牵涉到的知识点很多,或许很多地方存在纰漏、误差。如有问题,还请指正!!!
标签:关注 hub tostring 单位 调用 运行 知乎 define mil
原文地址:http://www.cnblogs.com/sxlfzhy/p/7616092.html