型态转换
虽然 JavaScript 在我们指定变数时会自动匹配一个正确的型态,但有时在开发中我们会需要另外转换型态以便进行运算或判断,以下就来介绍几种强制转换变数型态的方法!
转字串
方法一:toString()
toString()
是一个 JavaScript 方法 (method),会回传指定变数的字串型态,同时也支援进制转换(例如二进制、八进制间的转换),但无法处理 null
和 undefined
转字串。
语法:
变数.toString();
範例:
let a = 123; // 型态为 numberb = a.toString(); // 将 a 转为字串型态并指向变数 bconsole.log(a); // 123 (数字)conosle.log(typeof(a)); // numberconsole.log(b); // "123" (字串)conosle.log(typeof(b)); // string
方法二:String()
String()
属于建构函式,同样也能将变数转为字串并回传,与 toString
不同的是它可以处理 null
和 undefined
转字串,但无法处理进制之间的转换。
语法:
String(变数);
範例:
let a = String(123); // "123"let b = String(null); // "null"let c = String(undefined); // "undefined"
转数字
在讲变数转数字的方法之前要先来说一个观念,其实在变数中,数字型态又细分为几种,而最常见的有 Integer (整数)
和 Float (浮点数)
。整数,顾名思义就是以 1 为最小单位增减的数字,例如 1
、-1
等;而浮点数则是指含有小数的数,例如 3.14
、-0.99
,虽然他们同属 Number 型态,但在某些用法上还是有所不同。
方法一:parseInt()
parseInt()
会从字串的第一个字元开始撷取出有效整数并转为 number 型态,直到出现非数字字元,若第一个字元不是数字则回传 NaN
,而对于非字串型态的变数,parseInt 会先将其转为 string 再进行解析。
Tips: 依据 parseInt 的特性,可以被用来进行小数 (浮点数) 转整数的运算
语法:
parseInt(变数);
範例:
let a = parseInt("123"); // 123let d = parseInt(3.14); // 3 (可以达到无条件捨去取整数的效果)parseInt("12b3"); // 12 (parseInt 会依照顺序取数字直到出现非数字时停止)parseInt("a12b3"); // NaN (第一个字元 a 就不是数字,回传 NaN)
方法二:parseFloat()
parseFloat()
与 parseInt 用法相似,差别在于 parseFloat
撷取的是浮点数,直到出现非数字字元,对于非字串型态的变数,parseInt 一样会先将其转为 string 再进行解析。
语法:
parseFloat(变数);
範例:
let a = parseFlaot("123"); // 123 (parseFloat 一样可以转换整数)parseFloat("234.01f2"); // 234.01 (依照顺序取数字直到出现非数字时停止)parseFloat("a234.01"); // NaN (第一个字元 a 就不是数字,回传 NaN)
方法三:Number()
几本上 parseInt()
和 parseFloat()
是专门将 string 转为 number 的方法,所以在进行转换时都会先将变数转为字串型态,规则也比较宽鬆相较而言 Number()
就比较严谨,当内容无法转换时会直接回传 NaN
,下面就让我们来看看 Number()
几个重要的规则:
"123"
、"3.14"
,则直接转为 number若为全数字字串 + 前后空白,例如 " 123 "
,则忽略空白回传数字 123
若数字字串中间穿插空白,例如 "1 23 "
则为 NaN若为空字串或空白字串,例如 ""
、" "
,则为 0字串包含其他字元则为 NaN若原始变数为 boolean,则 true
为 1、false
为 0若原始值为 undefined,则回传 NaN若原始值为 null,则回传 0语法:
Number(变数);
範例:
Number("1233"); // 1233Number(" 122 "); // 122 (忽略前后空白)Number("1 345"); // NaN (字串中间有空白则为 NaN)Number(" "); // 0Number("12as3444"); // NaN (字串中包含其他非数字字元都是 NaN)Number(true); // 1Number(undefined); // NaNNumber(null); // 0 (空值)
parseInt()
和parseFloat()
无法转换 Boolean 型态,因为会先将值转为 string 再解析,所以变成 true -> "true" -> NaN
转 Boolean
Boolean()
Boolean()
可以将值转为 Boolean,规则很简单,除了 0
、NaN
、undefined
、null
、"" (空字串)
等 5 个值为 false 之外,其他任何值都为 true。
语法:
Boolean(变数);
範例:
Boolean("1233"); // trueBoolean(" "); // true (空白字串为 true)Boolean(""); // false (空字串为 false)Boolean(0); // falseBoolean(1); // trueBoolean(null); // false
上一篇:[快速入门前端 38] JavaScript:资料型态 (1) 基本资料型态和複合资料型态
系列文章列表:[快速入门前端] 系列文章索引列表