[快速入门前端 39] JavaScript:资料型态 (2) 强制转换资料型态

型态转换

虽然 JavaScript 在我们指定变数时会自动匹配一个正确的型态,但有时在开发中我们会需要另外转换型态以便进行运算或判断,以下就来介绍几种强制转换变数型态的方法!

转字串

方法一:toString()

toString() 是一个 JavaScript 方法 (method),会回传指定变数的字串型态,同时也支援进制转换(例如二进制、八进制间的转换),但无法处理 nullundefined 转字串。
语法:

变数.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 不同的是它可以处理 nullundefined 转字串,但无法处理进制之间的转换。
语法:

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() 几个重要的规则:

若原始变数为 string 型态若为全数字字串,例如 "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,规则很简单,除了 0NaNundefinednull"" (空字串) 等 5 个值为 false 之外,其他任何值都为 true。
语法:

Boolean(变数);

範例:

Boolean("1233"); // trueBoolean("   "); // true (空白字串为 true)Boolean(""); // false (空字串为 false)Boolean(0); // falseBoolean(1); // trueBoolean(null); // false

上一篇:[快速入门前端 38] JavaScript:资料型态 (1) 基本资料型态和複合资料型态
系列文章列表:[快速入门前端] 系列文章索引列表


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章