我的应用程序中有一个实用程序方法,直到最近几天一直没有问题。我不确定原因,因为这段代码在这个应用程序的生命周期的几年里没有改变。
在下面的方法中,一个 RangeError 被抛出在
return new Date().valueOf().toString()
如果我在返回值之前插入一个 console.log 就可以避免错误(如下面的评论所示)。
有趣的是,也可以通过传递除 10 之外的任何可接受的基数来避免错误,这是 toString() 未提供时的默认基数。
/** Creates a simple & unique ID based off the current date/time */
export function makeUniqueId(toHex: boolean = false): string {
if (toHex) {
return new Date().valueOf().toString(16).toUpperCase();
} else {
// const myDate = new Date().valueOf().toString();
// console.log(myDate); // No RangeError
// return myDate; // No RangeError if console.log is present, otherwise RangeError!
// return new Date().valueOf().toString(); // RangeError!
// return new Date().valueOf().toString(10); // RangeError!
return new Date().valueOf().toString(9); // No RangeError
}
}
我可以在最新版本的 Chrome 和 Safari 中重现此问题。错误如下:
ERROR RangeError: Maximum call stack size exceeded at Number.toString (<anonymous>) at makeUniqueId (