我正在为我们的CAM软件创建一个后处理器,但遇到了障碍。以下Javascript生成了以下结果。我非常亲密,但是如何在一开始就摆脱“未定义”?我机智的结束了。 谢谢
function onSection() {
var Comp = hasParameter("operation:compensationType")
? getParameter("operation:compensationType")
: " ";
var dComp = "";
if (Comp == "control") {
dComp = "D" + tool.diameterOffset + ", ";
} else {
return;
}
programInfo["program.comp"] += dComp;
}
结果:
undefinedD46, D46, D25,
答案 0 :(得分:1)
programInfo["program.comp"]
显然是undefined
,然后到达代码的最后一行。这是undefined
的唯一可能来源。
在连接之前确保它包含有效字符串。
if (!programInfo["program.comp"]) {
programInfo["program.comp"] = "";
}
programInfo["program.comp"] += dComp;
答案 1 :(得分:1)
在追加之前,您将需要一个初始值。在javascript中,未初始化的值是未定义的。
function onSection() {
var Comp = hasParameter("operation:compensationType")
? getParameter("operation:compensationType")
: " ";
var dComp = "";
if (Comp == "control") {
dComp = "D" + tool.diameterOffset + ", ";
} else {
return;
}
// Ensure the field exists, if not, set it to empty string
var hasField = programInfo["program.comp"] !== undefined;
if (!hasField) programInfo["program.comp"] = ""
programInfo["program.comp"] += dComp;
}
答案 2 :(得分:1)
programInfo["program.comp"]
可能尚未初始化。
由于您不想删除其值,因此应该有条件地进行此操作:
function onSection() {
var Comp = hasParameter("operation:compensationType")
? getParameter("operation:compensationType")
: " ";
var dComp = "";
if (Comp == "control") {
dComp = "D" + tool.diameterOffset + ", ";
} else {
return;
}
if (!programInfo["program.comp"]) {
programInfo["program.com"] = "";
}
programInfo["program.comp"] += dComp;
}
答案 3 :(得分:0)
因此您会得到一个未定义的,因为该属性是未定义的。因此,您需要对其进行初始化。
最佳解决方案,当您定义programInfo时,将"program.comp"
设置为空字符串
其他解决方案是查看是否已设置,如果未将其设置为空字符串
programInfo["program.comp"] = programInfo["program.comp"] || ''
programInfo["program.comp"] += dComp;
或使用if / else添加它
if!(programInfo["program.comp"]) {
programInfo["program.comp"] = dComp;
} else {
programInfo["program.comp"] += dComp;
}