转换字符串时，Number() 和 parseInt() 的区别？

Number() 和 parseInt() 是 JavaScript 中用于将字符串转换为数字的两个不同函数，它们在处理字符串时有一些不同之处。

Number()

Number() 函数将整个字符串转换为数字。

如果字符串包含非数字字符（除了开头的空格和正负号），则返回 NaN。

如果字符串可以被完整地解析为一个数字，则返回该数字。

parseInt()

parseInt() 函数解析字符串的整数部分，直到遇到第一个非数字字符为止。

可以指定一个可选的基数（即进制）来解析字符串。

如果字符串以非数字字符开头，parseInt() 返回 NaN。

示例解释

示例 1

Copy
let a = "1hola1";
console.log(Number(a)); // 输出: NaN
console.log(parseInt(a)); // 输出: 1

解释：

Number("1hola1") 返回 NaN，因为整个字符串 "1hola1" 无法转换为一个有效的数字。

parseInt("1hola1") 返回 1，因为它从字符串开头解析，直到遇到非数字字符 h。

示例 2

Copy
let a = "1";
console.log(Number(a)); // 输出: 1
console.log(parseInt(a)); // 输出: 1

解释：

Number("1") 和 parseInt("1") 都返回 1，因为字符串 "1" 是一个有效的数字，没有非数字字符干扰解析。

总结

使用 Number() 可以将整个字符串转换为一个数字，如果字符串包含任何非数字字符，则返回 NaN。

使用 parseInt() 可以从字符串的开头解析出整数部分，直到遇到非数字字符为止。

其他示例

Copy
console.log(Number("123.45")); // 输出: 123.45
console.log(parseInt("123.45")); // 输出: 123

console.log(Number(" 123 ")); // 输出: 123
console.log(parseInt(" 123 ")); // 输出: 123

console.log(Number("123abc")); // 输出: NaN
console.log(parseInt("123abc")); // 输出: 123

console.log(Number("abc123")); // 输出: NaN
console.log(parseInt("abc123")); // 输出: NaN

这些示例展示了 Number() 和 parseInt() 在处理不同字符串时的行为差异。

又学习到了新的知识。