Javascript字符串到数字类型强制

Che*_*one 8 javascript types

前几天我遇到了这个问题,无法弄清楚引擎盖下到底发生了什么.将String强制转换为Number类型的规则是什么?为什么它在'5.0.1'的例子中失败了?

var numStr = '5.0';
var floatStr = '5.0.1';

//Passes
if (numStr >= 4) {
    alert('5 > 4');
}

//Fails
if (floatStr >= 4) {
    alert('5.0.1 > 4');
}

console.log(parseInt(numStr)); //5
console.log(parseInt(floatStr)); //5

console.log(Number(numStr)); //5
console.log(Number(floatStr)); //NaN
Run Code Online (Sandbox Code Playgroud)

Pet*_*ter 13

嗯,对于一个,"5.0.1"不是String浮动指针号的有效表示.我原本预计也会parseInt失败.

编辑:但是,与类型转换值相反,parseInt是一个旨在提取具有更大噪声容限的值的函数.

具体的实现细节定义如下:EMCA-262

例如,在应用强制转换时Number([value]),该toNumber函数用于执行转换 - 如9.3.1节所述.行为parseInt在第15.1.2.2节中描述.