跳转到主要内容
模块 2 · 第 4 课(共 4)课程中的8/32~8 min
模块课程(4/4)

类型转换

您始终需要转换值的类型: 的 value HTML 输入作为字符串到达,即使它代表数字、API 返回字符串格式,您需要将对象记录为文本。 JS 优惠 三种转换系列:显式、专用解析器和(将 避免)隐含的。

显式转换

这些是最清晰的,应该是您的默认值:

JS
Number('42'); // 42
Number('3.14'); // 3.14
Number(''); // 0     ← careful
Number('  10 '); // 10     (spaces are ignored)
Number('ciao'); // NaN    ← does not represent a number

String(42); // '42'
String(true); // 'true'
String(null); // 'null'
String(undefined); // 'undefined'

Boolean(1); // true
Boolean(0); // false
Boolean(''); // false
Boolean('abc'); // true

parseInt 和 parseFloat:宽容的解析器

与 Number(...) 不同,parseInt 和 parseFloat 忽略非数字 字符串的 tail :它们停在第一个无效字符处。

JS
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt('   12 anni'); // 12
parseInt('ciao12'); // NaN  ← must start with digits

toFixed 将数字格式化为字符串

在上一课中简要介绍过:四舍五入到 N 位小数并返回 字符串。

JS
(3.14159).toFixed(2); // '3.14'
(1).toFixed(2); // '1.00'

要将其转换回 number 使用 Number(...) 前缀或一元 +:

JS
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14

NaN:咬合的值

NaN(“不是数字”)是由失败的数字运算生成的:

JS
Number('ciao'); // NaN
0 / 0; // NaN
parseInt('xxx'); // NaN

特征:

  • 它的类型为 'number' (是的,“非数字”是数字)
  • 它不等于它本身:NaN === NaN 是 false
  • 要测试它,请使用函数 Number.isNaN(x)
JS
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // true

尝试一下

锻炼#js.m2.l4.e1
尝试:0加载中...

给定字符串“128.95 EUR”,提取(十进制)数字并将其四舍五入到最接近的整数,将其作为数字返回。预计:129。

正在加载编辑器...
显示提示

parseFloat 忽略 'EUR'; .toFixed(0) 四舍五入为字符串形式的整数; Number(...) 转换回数字。

3 次尝试后可用的解决方案

复习练习

锻炼#js.m2.l4.e2
尝试:0加载中...

给定 `n = Number('non un numero')`,编写一个表达式,如果结果为 NaN,则该表达式的计算结果为 true。

正在加载编辑器...
显示提示

使用 Number.isNaN,而不是 n === NaN:NaN 不等于其自身。

3 次尝试后可用的解决方案