运算符+ =给出不确定的结果

时间:2018-08-29 14:02:50

标签: javascript

我正在为我们的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,

4 个答案:

答案 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;
}