可变强制转换

有些语言要求你提前定义要声明的变量类型。JavaScript 不这样做; 它会试图自己解决这个问题。有时这可能会产生意外行为。

如果我们使用以下 HTML

<span id="freezing-point">0</span>

并通过 JS 检索其内容,它不会将其转换为数字,即使人们可能期望它。如果我们使用以下代码段,可能会认为 boilingPoint100。但是,JavaScript 会将 moreHeat 转换为字符串并连接两个字符串; 结果将是 0100

var el = document.getElementById('freezing-point');
var freezingPoint = el.textContent || el.innerText;
var moreHeat = 100;
var boilingPoint = freezingPoint + moreHeat;

我们可以通过明确地将 freezingPoint 转换为数字来解决这个问题。

var el = document.getElementById('freezing-point');
var freezingPoint = Number(el.textContent || el.innerText);
var boilingPoint = freezingPoint + moreHeat;

在第一行中,我们在存储之前将 0(字符串)转换为 0(数字)。完成添加后,你将获得预期结果(100)。