直到我在写这篇之前,parseInt 在我心中都还是一个很简单的概念,一个可以把字串变成数字的函数。
// 把字串转成数字的型别
let a = "1";
a = parseInt("1");
console.log(a+1); // 1
一直没有好好思考 parseInt 由字串转成数字的原理是什麽,我把这个转型的过程想得很简单,反正我不论输入什麽字串,它就是照本宣科的转成数字,没有想到那如果我输入的是文字字串呢,它又会怎麽帮我转成数字或会变成什麽?
於是我决定好好的把 parseInt 笔记下来,也希望自己以後学到任何一个函式,都能够更多的去思考他们的原理。
parseInt() 函数解析一个字串并回传一个整数。
一般来说,只要是数字都能转型,不过要透过 parseInt 转型,即使是数字仍然是有规则的。
parseInt(string, radix);
参考 MDN 的说法,简单解释这规则里面 string 以及 radix 的意思:
string
将要转成数字的字串。例外的情况是,如果此时 string 不是字串,就会先经过 ToString 再执行 parseInt,如果是空白值则会被忽略。
radix (基数)
代入数字为 2 到 36,代表二进位、八进位、十进位或十六进位,譬如指定 10 就代表十进位,一定要定义这个参数,避免给出的结果因实做不同而产生变化,通常预设不是 10 进位,因此如果 radix 为 0 或没有设置参数的时候则会根据 string 做判断。
以下范例作参考:
parseInt("10"); // 10
parseInt("19",10); // 19 (10+9)
parseInt("11",2); // 3 (2+1)
parseInt("17",8); // 15 (8+7)
parseInt("1f",16); // 31 (16+15)
parseInt("010"); // 10
此外,如果字串第一个字不能转换成数字,那麽会直接出现NaN的结果。
parseInt("Hello", 8); // NaN
ToString() 函数解析一个数字并回传一个字串。
上面我们提到 parseInt 将字串转成数字并回传,那麽如何再把数字转回字串?底下一样提供一个简单的范例:
// 数字改成字串的型别
let b = 1;
b = b.toString();
console.log(typeof b); // 即显示string
console.log(b+1);
ToString 的转型规则
number.toString(radix)
radix 代入的数字介於 2-36 的整数,代表进位,预设为10。
参考的范例,大盖可以了解到 ToString 将数字转回字串同样使用进位的方式。
let count = 10;
count.toString() // '10' 预设
(17).toString() // '17'
(17.2).toString() // '17.2'
let x = 6;
x.toString(2) // '110' 二进位表示法
(254).toString(16) // 'fe' 十六进位表示法
(-10).toString(2) // '-1010'
(-0xff).toString(2) // '-11111111'
要注意,当对象不是数字的时候会抛出 Error。
参考 ToString 各个使用方法 (返回物件的字串表示):
Array - 将 Array 的元素转换为字串。
Boolean - 如果 Boolean 值是 true,则回传 true,否则回传 false。
Date - 返回日期的文字表示法。
Error - 将包含相关错误讯息的数字转为字串。
Function - 返回如下格式的字串。
// unctionname 是被呼叫 toString 方法函式
function functionname( ) { [native code] }
Number - 将数字回传字串。
String - 返回 String 物件的值。
String 为字串,规则为:
// thing 为任何要转字串的物件
String(thing)
<<: [Day13] 文本/词表示方式(四)-共现矩阵与降维
>>: [Angular] Day13. Built-in directives - attribute
老板我要一个猪排汉堡, 不要番茄,不要小黄瓜, 洋葱加量,加起司, 现实生活中,我们常常会在点餐时跟...
Aloha!又是我少女人妻 Uerica!这个连假又过了一场奇幻旅程,交了两个好朋友,心得是原来我...
在串接API之前我们还有一个重要的设定要做,我们必须先汇出证交所网站的SSL证书,并加入到JAVA的...
在介绍 Mutex lock 与 Spinlock 後,本篇文章同样针对并行程序的 Synchron...
今日练习档 ԅ( ¯་། ¯ԅ) 今天要与大家介绍COUNT家族,包含COUNT、COUNTA、CO...