我的JS函数存在问题:每当我运行此函数时,控制台都会抛出错误。我只是试图“修剪”作为参数传递的值,但控制台说:
未捕获的TypeError:number.trim不是函数
问题在于我的语法,以下是代码:
function demo(number) {
number = number.trim(); // This is where the issue happens...
number = number.parseInt();
// Rest of the code
}
非常感谢您的帮助!
答案 0 :(得分:9)
修剪仅适用于字符串。
String.prototype.trim
为什么需要修剪数字?
您可以使用parseInt
或parseFloat
如果你不知道你的数据,有时可能是字符串或某个时候它可能是数字
然后尝试这样
number = String(number).trim();
答案 1 :(得分:3)
Uncaught TypeError: number.trim is not a function
似乎表明number
不是String
对象。由于parseInt()
不是String.prototype
如果传递给demo
的参数为String
且预期结果为Number
,请尝试通过调用number
将Number
转换为Number()
对象参数String.prototype.match()
与RegExp
/\d+/g
匹配数字Array.prototype.join()
与参数""
function demo(number) {
number = typeof number === "string"
? Number(number.match(/\d+/g).join(""))
: typeof number === "number" ? number : typeof number;
return number
}
console.log(demo(" abc 123 def 456 "), demo(7), demo([]))
答案 2 :(得分:2)
该错误消息基本上是说传递给方法的任何内容都没有trim函数。您必须连接调试器并验证传递给函数的内容。无论它是什么都没有trim()函数。