首页 > 解决方案 > 无法读取未定义的属性“toLocaleString”

问题描述

我有一个 Tampermonkey 脚本,可以将一些信息添加到基于浏览器的游戏中。我使用一段简单的代码根据玩家的语言环境为数字添加千位分隔符:

function nThousand(x) {
    return x.toLocaleString();
}

很多代码中都用到了这个函数,例如:

$("#CustomStats" + stat).html(
"<b>" + texts[lang].stat_points_need + ":</b> " + nThousand(remainingPoints) + "<br />" +
"<b>" + texts[lang].money_need + ": </b>" + nThousand(remainingMoney) + "<br />" +
"<b>" + texts[lang].money_spent + ": </b>" + nThousand(currentMoney) + "<br /><br />" +
"<b>" + texts[lang].bought_points + ": </b>" + nThousand(boughtPoints) + "<br />" +
"<b>" + texts[lang].equipment_points + ": </b>" + nThousand(itemPoints) + "<br />" +
"<b>" + texts[lang].points_from_level + ": </b>" + nThousand(skillPoints) + "<br />"
);

这已经完美运行了很长时间,但由于某种原因,在游戏运行的特定平台上,脚本现在拒绝加载并给出以下错误消息:

无法读取未定义的属性“toLocaleString”

我已经返回了几十个版本,以确保它不是我最近添加或更改的东西,老实说,我什至不知道从哪里开始解决这个问题。该函数仅在存在要本地化的值时运行,并且仅在游戏运行的一个特定平台上执行此操作。

我的问题:可能是什么原因造成的,我将如何解决这个问题?

标签: javascripttampermonkey

解决方案


问题不toLocaleString在于 ,问题在于您传递undefined给函数的某个地方。您需要通过调试弄清楚为什么会发生这种情况。向函数添加一个守卫也可能是一个好主意,如果它传递了一个非字符串值,则返回一个空字符串。


推荐阅读