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

时间:2019-06-12 17:55:11

标签: javascript tampermonkey

我有一个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'

我已经回溯了几十个版本,以确保它不是我最近添加或更改的内容,老实说,我什至不知道我将从哪里开始解决此问题。该功能仅在存在要本地化的值时才运行,并且仅在运行该功能的特定平台上运行。

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

1 个答案:

答案 0 :(得分:0)

问题不是toLocaleString引起的,而是问题是您正在将undefined传递给函数。您需要通过调试找出原因。最好在函数中添加一个保护,如果传递了非字符串值,则返回一个空字符串。